Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Starting from IDA v6.2, the callgraph of a program can be displayed in a graph form.
In the proximity view, the current address, the callers and the callees are represented as a collection of nodes linked together with edges. Nodes represent functions and data references (global variables, strings, etc..) and edges represent code or data cross-references between them.
To open the proximity view press the '-' key to zoom out and switch to the callgraph of the address under cursor.
Only the address names (function names or data labels) are displayed in the proximity view, but not the disassembly, nonetheless, hovering the mouse over a node will display brief disassembly listing in a resizable hint window. To see the complete disassembly listing switch to text or graph mode by pressing '+' or Space respectively.
When disassembling new files, IDA will display a dialog offering to switch to proximity view when applicable. It is possible to turn off this dialog and not show it again.
In the proximity view there are 3 types of nodes: Function nodes, data nodes and auxiliar nodes. Function nodes are rectangular and they have a toolbar. Those nodes are used to display the callers or callees of the current central node (or any of his parents or children). Data nodes are rectangular nodes (without a toolbar) and they are used to display the data references (global variables, strings, etc...) to/from the current central node or any of his parents and children.
Please select one of the following topic to learn more about graphs:
Some IDA commands such as selecting a portion of file to output or specifying a segment to move need an anchor.
To drop the anchor, you can either use the Alt-L key or the Shift-<arrow> combination, which is more convenient. You can also drop the anchor with the mouse by simply clicking and dragging it.
After you've dropped the anchor, you can navigate freely using arrows, etc. Any command that uses the anchor, raises it.
The anchored range is displayed with another color.
When you exit from IDA, the anchor value is lost.
IDA Pro has a tightly integrated disassembly view that is graph-based, giving a control flow view to the disassembly as opposed to the standard text-style disassembly output. Different colored arrows are used to distinguish the various types of flows. You can also zoom in or out of the graph for greater clarity. For complicated graphs, you can use the Graph Overview window which can provide you with overall awareness of the area that you are viewing in the graph.
Graphing also gives you the ability to rearrange, group, and collapse blocks in the graph. As only one function can be viewed in each individual graph, you can create other disassembly graphs for other functions, so that you can view two or more at the same time.
Here’s an overview of the Graph features:
You should enter an address as a hexadecimal number or a location name. When you enter the address in the hexadecimal format, you can omit the segment part of the address and the current segment will be used. Addresses beyond the program limits are invalid.
Also, you can enter a location name with a displacement:
name+5
And finally you can specify a relative address:
+10 0x10 bytes further
-5 5 bytes backwards
If the entered string cannot be recognized as a hexadecimal number or location name, IDA will try to interpret it as an expression using the current script interpreter. The default interpreter is IDC.
Special addresses: $ - current location (depends on the current assembler) Examples:
456
current segment, offset 0x456
5E
current segment, offset 0x5E
3000:34
segment 0x3000, offset 0x34
ds:67
segment pointed by ds, offset 0x67
0:4000000
linear address
0x4000000
start a location with name 'start'
An identifier is a name which starts with a letter and contains only letters and digits. The list of allowed characters is specified in config file . All names are case-sensitive.
Maximal length of a name is specified in the configuration file too:
Default is 120.
Some assemblers have a shorter name length limit, beware!
IDA will warn you if you enter an illegal name.
MAX_NAME_LENGTH=120 // Maximal length of new names
You must enter a segment base value as a hexadecimal number or a segment name. IDA will warn you if you enter an invalid segment.
You may enter a segment register name too.
seg000:02E4
seg000:02E4 ; =============== S U B R O U T I N E =======================================
seg000:02E4
seg000:02E4
seg000:02E4 sub_2E4: ; CODE XREF: seg000:0316↓p
seg000:02E4 ; seg000:0344↓p
seg000:02E4 cmp.b R1H, #0
seg000:02E7 bge loc_2F6
seg000:02E9 movs.w R4, #0
seg000:02EB sub.w R4, R0
seg000:02ED mov.w R0, R4
seg000:02EF movs.w R4, #0
seg000:02F1 subb.w R4, R1
seg000:02F3 mov.w R1, R4
seg000:02F5 nop
seg000:02F6
seg000:02F6 loc_2F6: ; CODE XREF: sub_2E4+3↑j
seg000:02F6 cmp.b R3H, #0
seg000:02F9 bge locret_308
seg000:02FB movs.w R4, #0
seg000:02FD sub.w R4, R2
seg000:02FF mov.w R2, R4
seg000:0301 movs.w R4, #0
seg000:0303 subb.w R4, R3
seg000:0305 mov.w R3, R4
seg000:0307 nop
seg000:0308
seg000:0308 locret_308: ; CODE XREF: sub_2E4+15↑j
seg000:0308 ret
seg000:0308 ; End of function sub_2E4
seg000:0308
seg000:030A ; ---------------------------------------------------------------------------
seg000:030A push.w R4
seg000:030C push.w R5
seg000:030E push.w R6
IDA is the most powerful existing 6502 disassembler. Companies such as Commodore, Atari and Apple have used the 6502 and 65c02 design. If you are looking for additional information or even less powerful disassemblers, we recommend www.6502.org, a very useful 6502 resource center.
Assembler code
seg000:0065 ; ---------------------------------------------------------------------------
seg000:0065 CMP $3E8
seg000:0068 CMP $3E8,X
seg000:006B CMP $3E8,Y
seg000:006E CMP 0,X
seg000:0071 CMP $FF,X
seg000:0073 CPX #0
seg000:0075 CPX #$FF
seg000:0077 CPX byte_64
seg000:0079 CPX $3E8
seg000:007C CPY #0
seg000:007E CPY #$FF
seg000:0080 CPY byte_64
seg000:0082 CPY $3E8
seg000:0085 DEC byte_64
seg000:0087 DEC $3E8
seg000:008A DEC $3E8,X
seg000:008D DEC 0,X
seg000:0090 DEC $FF,X
seg000:0092 DEX
seg000:0093 DEY
seg000:0094 EOR #0
seg000:0096 EOR #$FF
seg000:0098 EOR ($64),Y
seg000:009A EOR ($64,X)
seg000:009C EOR byte_64
seg000:009E EOR $3E8
seg000:00A1 EOR $3E8,X
seg000:00A4 EOR $3E8,Y
seg000:00A7 EOR 0,X
seg000:00AA EOR $FF,X
seg000:00AC INC byte_64
seg000:00AE INC $3E8
seg000:00B1 INC $3E8,X
seg000:00B4 INC 0,X
IDA can analyze a program when it is not occupied performing an action you prompted. You disassemble a program together with IDA, but your requests have priority.
The state of background analysis is shown on the upper right-hand corner of the screen.
You can disable autoanalysis, but in this case some functions of IDA will produce strange results (e.g. if you try to convert data into instructions, IDA will NOT trace all the threads of control flow and the data will be converted into instructions only on the screen...)
See also analysis options.
IDA is an interactive disassembler, which means that the user takes active participation in the disassembly process. IDA is not an automatic analyzer of programs. IDA will give you hints about suspicious instructions, unsolved problems etc. It is your job to inform IDA how to proceed.
If you are using IDA for the very first time, here are some commands that you will find very useful:
convert to : the hotkey is "C"
convert to : the hotkey is "D" All the changes that you made are saved to disk. When you run IDA again, all the information on the file being disassembled is read from the disk, so that you can resume your work.
For other commands please refer to the system and the help.
IDA is the most powerful disassembler available for the 6808 family of microcontrollers. Which include the following devices:
68HC08AB16A, 68HC908AB32, 68HC08AS32, 68HC08AS32A, 68HC908AS32A, 68HC908AS60, ,68HC908AS60A, 68HC08AZ32A, 68HC908AZ32A, 68HC08AZ60A, 68HC908AZ60A, 68HC08BD24, 68HC908BD48, ,68HC908EY16, 68HC908GP32, 68HC908GR4, 68HC908GR8, 68HC908GR8A, 68HC908GR16, 68HC908GT8, ,68HC908GT16, 68HC908GZ8, 68HC908GZ16, 68HC08JB1, 68HC908JB16, 68HC908JB8, 68HC08JB8, 68HC908JK1, ,68HC908JK3, 68HC08JK3, 68HC908JK8, 68HC08JK8, 68HC908JL3, 68HC08JL3, 68HC908JL8, 68HC08JL8, 68HC08JT8, 68HC08KH12, 68HC908KX2, 68HC908KX8, 68HC908LD64, 68HC908LJ12, 68HC908MR8, 68HC908MR16, 68HC908MR32, 68HC908QT1, 68HC908QT2, 68HC908QT4, 68HC908QY1, 68HC908QY2, 68HC908QY4, 68HC908RF2, ,8HC908RK2, 68HC908SR12, MC3PHAC, MC9S08GB32, MC9S08GB60, MC9S08GT32, MC9S08GT60.
Assembler code
EXTRA0_87:0000C1B5
EXTRA0_87:0000C1B5 ; =============== S U B R O U T I N E =======================================
EXTRA0_87:0000C1B5
EXTRA0_87:0000C1B5
EXTRA0_87:0000C1B5 ; public App_OnReadValues
EXTRA0_87:0000C1B5 App_OnReadValues: ; CODE XREF: main+2A9↓P
EXTRA0_87:0000C1B5 pshx
EXTRA0_87:0000C1B6 pshh
EXTRA0_87:0000C1B7 tax
EXTRA0_87:0000C1B8 add 2, sp1
EXTRA0_87:0000C1BB sta 1, sp1
EXTRA0_87:0000C1BE cpx #1
EXTRA0_87:0000C1C0 txa
EXTRA0_87:0000C1C1 bhi loc_C1D2
EXTRA0_87:0000C1C3 tsx
EXTRA0_87:0000C1C4 ldx , x
EXTRA0_87:0000C1C5 cpx #2
EXTRA0_87:0000C1C7 bcs loc_C1D2
EXTRA0_87:0000C1C9 brset DDRF6, _LEDC, loc_C1CE
EXTRA0_87:0000C1CC clrx
EXTRA0_87:0000C1CD skip2
EXTRA0_87:0000C1CE
EXTRA0_87:0000C1CE loc_C1CE: ; CODE XREF: App_OnReadValues+14↑j
EXTRA0_87:0000C1CE ldx #1
EXTRA0_87:0000C1D0 stx byte_70
EXTRA0_87:0000C1D2
EXTRA0_87:0000C1D2 loc_C1D2: ; CODE XREF: App_OnReadValues+C↑j
EXTRA0_87:0000C1D2 ; App_OnReadValues+12↑j
EXTRA0_87:0000C1D2 ldx #$6F ; 'o'
EXTRA0_87:0000C1D4 pshx
EXTRA0_87:0000C1D5 tsx
EXTRA0_87:0000C1D6 ldx 2, x1
EXTRA0_87:0000C1D8 jsr SSD_CopyParmsToAppBuffer
EXTRA0_87:0000C1DB ais #3
EXTRA0_87:0000C1DD rts
EXTRA0_87:0000C1DD ; End of function App_OnReadValues
EXTRA0_87:0000C1DD
FLEX is the name of the Operating System for the Motorola 6800 and 6809. IDA can disassemble OS9 object and FLEX STX files and is probably the most powerful disassembler for that platform.
Assembler code
TEXT:54A5
TEXT:54A5 * =============== S U B R O U T I N E =======================================
TEXT:54A5
TEXT:54A5
TEXT:54A5 sub_54A5 * CODE XREF: sub_4F06+78↑P
TEXT:54A5 * sub_5048+1CB↑P ...
TEXT:54A5 pshs dpr,y,u
TEXT:54A7 ldy 7,s
TEXT:54AA ldx ,y
TEXT:54AC ldd 9,s
TEXT:54AE aslb
TEXT:54AF leay b,y
TEXT:54B1 ldd $B,s
TEXT:54B3 pshs a,b,x
TEXT:54B5 tfr b,a
TEXT:54B7 ldu ,y
TEXT:54B9 beq loc_54BD
TEXT:54BB jsr ,u
TEXT:54BD
TEXT:54BD loc_54BD * CODE XREF: sub_54A5+14↑j
TEXT:54BD tfr a,b
TEXT:54BF clra
TEXT:54C0 leas 4,s
TEXT:54C2 puls pcr,u,y,dpr
TEXT:54C2 * End of function sub_54A5
TEXT:54C2
TEXT:54C4
TEXT:54C4 * =============== S U B R O U T I N E =======================================
TEXT:54C4
TEXT:54C4
TEXT:54C4 sub_54C4 * CODE XREF: sub_4C67+63↑P
TEXT:54C4 * sub_4C67+87↑P ...
TEXT:54C4 pshs dpr,y,u
TEXT:54C6 lda $C,s
TEXT:54C8 ldx 7,s
The 6805 microcontroller family is Motorola’s simplest and least-expensive family of microcontrollers. As usual there were many variations of the chips and the part numbers usually contain letter and digits, like 68HC05. IDA is the most powerful disassembler available for those microcontrollers.
68HC05B6, 68HC05B8, 68HC05B16, 68HC705B16, 68HC05B32, 68HC705B32, 68HC05BD5, 68HC05C8A, 68HC705C8A, 68HC05C9A, 68HC705C9A, 68HC705F32, 68HC05J1A, 68HC705J1A, ,68HC05J5A, 68HC705J5A, 68HC05JB3, 68HC705JB3, 68HC05JB4, 68HC705JB4, 68HC05JJ6, ,68HC705JJ7, 68HC05JP6, 68HC705JP7, 68HC05K3, 68HC705KJ1, 68HC05L16, 68HC705L16, ,68HC05L25, 68HC05LJ5, 68HC05P18A, 68HC05P4A, 68HC05P6, 68HC705P6A, 68HC05PV8A, ,68HC805PV8, 68HC05SR3, 68HC705SR3, 68HC05SU3A, 68HC05X4, 68HC705X4, 68HC05X16, ,68HC05X32, 68HC705X32.
Assembler code
RESERVED:01DC fcb $BF ; ¿
RESERVED:01DD fcb $64 ; d
RESERVED:01DE fcb $CF ; Ï
RESERVED:01DF fcb 3
RESERVED:01E0 ; ---------------------------------------------------------------------------
RESERVED:01E0 eorb $97,x
RESERVED:01E2 sts <byte_9D
RESERVED:01E4 suba #$81
RESERVED:01E6 subd #$8F98
RESERVED:01E9 oraa <byte_9C
RESERVED:01EB adca <byte_9B
RESERVED:01ED lds #$200E
RESERVED:01F0 brn loc_1FE
RESERVED:01F2 bhi loc_1FE
RESERVED:01F4 bls loc_1FE
RESERVED:01F6 bcc loc_1FE
RESERVED:01F8 bcc loc_1FE
RESERVED:01FA bcs loc_1FE
RESERVED:01FC bcs *+2
RESERVED:01FE
RESERVED:01FE loc_1FE: ; CODE XREF: RESERVED:01F0↑j
RESERVED:01FE ; RESERVED:01F2↑j ...
RESERVED:01FE bne loc_1FE
RESERVED:0200 beq loc_1FE
RESERVED:0202 bvc loc_1FE
RESERVED:0204 bvs loc_1FE
RESERVED:0206 bpl loc_1FE
RESERVED:0208 bmi loc_1FE
RESERVED:020A bge loc_1FE
RESERVED:020C blt loc_1FE
RESERVED:020E bgt loc_1FE
RESERVED:0210 ble loc_1FE
RESERVED:0212 jsr $EA,x
RESERVED:0212 ; ---------------------------------------------------------------------------
RESERVED:0214 fcb 0
The 68HC11 is a powerful 8-bit data, 16-bit address microcontroller from Motorola. IDA is, without any doubts, the most powerful 6811 disassembler. Here are a few part numbers of that huge family: 68HC11D0, 68HC11D3, 68HC711D3, 68HC11E0, 68HC11E1, 68HC11E9, 68HC11EA9, 68HC711E9, 68HC11E20, 68HC711E20, 68HC11F1, 68HC11K0, 68HC11K1, 68HC11K4, 68HC11KS1, 68HC11KS2, 68HC711KS2, 68HC11P1, 68HC11P2.
Assembler code\
RAM:00B4 asl $B4,y
RAM:00B7 asl $88,y
RAM:00BA
RAM:00BA loc_BA: ; DATA XREF: RAM:loc_BA↓w
RAM:00BA asl loc_BA
RAM:00BD asl word_8888
RAM:00C0 asra
RAM:00C1 asrb
RAM:00C2 asr word_8888
RAM:00C5 asr word_8888
RAM:00C8 asr 0,x
RAM:00CA asr $CA,x
RAM:00CC asr $88,x
RAM:00CE asr 0,y
RAM:00D1 asr $D1,y
RAM:00D4 asr $88,y
RAM:00D7
RAM:00D7 loc_D7: ; DATA XREF: RAM:loc_D7↓w
RAM:00D7 asr loc_D7
RAM:00DA asr word_8888
RAM:00DD bclr $DD,x 0
RAM:00E0 bclr $E0,x $88 ; 'ˆ'
RAM:00E3 bclr $88,x $88 ; 'ˆ'
RAM:00E6 bclr $E6,y $88 ; 'ˆ'
RAM:00EA bclr $88,y $88 ; 'ˆ'
RAM:00EE bita #0
RAM:00F0
RAM:00F0 loc_F0: ; DATA XREF: RAM:loc_F0↓r
RAM:00F0 bita <loc_F0
RAM:00F2 bita 0,x
RAM:00F4 bita $F4,x
RAM:00F6 bita $88,x
RAM:00F8 bita 0,y
RAM:00FB bita $FB,y
RAM:00FB ; ---------------------------------------------------------------------------
Assembler code
CODE:000F
CODE:000F ; =============== S U B R O U T I N E =======================================
CODE:000F
CODE:000F
CODE:000F global EEPWr
CODE:000F EEPWr:
CODE:000F movl %c1 PCtlA,#0
CODE:0010 ldr SR0,#8
CODE:0011 ; assume a = 8
CODE:0011 ldr SR1,#9
CODE:0012 ; assume b = 9
CODE:0012 ldr SR2,#$E
CODE:0013 ; assume c = $E
CODE:0013 ldr SR5,#$40
CODE:0014 movl %b1 byte_100049,#0
CODE:0015 movl %b4 byte_10004C,#0
CODE:0016 jsr sub_29F
CODE:0017 ldr SR6,#$82
CODE:0018 ldr SR7,#7
CODE:0019 movl %c0 byte_100070,#$A
CODE:001A
CODE:001A loc_1A: ; CODE XREF: EEPWr+F↓j
CODE:001A mov %b0 byte_100048,%d7
CODE:001B jsr sub_25F
CODE:001C jsr sub_29F
CODE:001D subl %c0 byte_100070,#1
CODE:001E jnz loc_1A
CODE:001F swap %b0 byte_100048
CODE:0020 cmpl %c1 byte_100071,#1
CODE:0021 jnz loc_23
CODE:0022 btg %b0 byte_100048,#$80
CODE:0023
CODE:0023 loc_23: ; CODE XREF: EEPWr+12↑j
CODE:0023 mov %c4 byte_100074,%b0 byte_100048
CODE:0024 movl %b0 byte_100048,#$90
The 68HC16 is a Motorola microcontroller that is used, among other things, in the automotive industry: IDA is the most powerful disassembler for the 68HC16Y1 , 68HC16Z1, 68HC16Z3 processors and is widely used by car tuner and race teams.
Assembler code
RESERVED:01BC fcb $D
RESERVED:01BD fcb $7F ;
RESERVED:01BE fcb $D
RESERVED:01BF fcb $80 ; €
RESERVED:01C0 ; ---------------------------------------------------------------------------
RESERVED:01C0 sec
RESERVED:01C1 stx byte_E00
RESERVED:01C4 cli
RESERVED:01C5 nop
RESERVED:01C6 cli
RESERVED:01C7 clr byte_E80
RESERVED:01CA cli
RESERVED:01CB stx byte_F00
RESERVED:01CE sei
RESERVED:01CF nop
RESERVED:01D0 sei
RESERVED:01D1 clr byte_F80
RESERVED:01D4 sei
RESERVED:01D5 stx PORTA ; Port A data
RESERVED:01D8 sba
RESERVED:01D9 nop
RESERVED:01DA sba
RESERVED:01DB clr byte_1080
RESERVED:01DE sba
RESERVED:01DF stx byte_1100
RESERVED:01E2 cba
RESERVED:01E3 nop
RESERVED:01E4 cba
RESERVED:01E5 clr byte_1180
RESERVED:01E8 cba
RESERVED:01E9 stx byte_1200
RESERVED:01EC brset <byte_1 $12 loc_26F
RESERVED:01F0
RESERVED:01F0 loc_1F0: ; CODE XREF: RESERVED:loc_1F0↑j
RESERVED:01F0 brset <byte_80 $12 loc_1F0+3
IDA is the most powerful disassembler for Max OS 8 and Mac OS 9 PEF files.
The Motorola 68K family of processors is huge and very widely used. A few sample parts: MC68000, MC68010, MC68020, MC68030, MC68040, MC68330, MC68882, MC68851, MC68020EX, MC68302 Integrated Communication Processor, MC68306 68K/ColdFire, MC68331 68K/ColdFire, MC68332 68K/ColdFire, MC68336 68K/ColdFire, MC68340 68K/ColdFire, MC68360 Integrated Communication Processor, MC68F375 68K/ColdFire, MC68376 68K/ColdFire, etc.
Assembler code
seg000:40800530
seg000:40800530 ; =============== S U B R O U T I N E =======================================
seg000:40800530
seg000:40800530
seg000:40800530 sub_0_40800530: ; CODE XREF: sub_0_40800194+164↑p
seg000:40800530 pea -4(a5)
seg000:40800534 _InitGraf ; f
seg000:40800536 pea -$200(a6)
seg000:4080053A _OpenCPort ; ort
seg000:4080053C movea.l (a5),a2
seg000:4080053E pea -$6C(a2)
seg000:40800542 _SetCursor ; or
seg000:40800544 lea -$74(a2),a0
seg000:40800548 move.l a0,-(sp)
seg000:4080054A lea ($9FA).w,a1
seg000:4080054E move.l a1,-(sp)
seg000:40800550 move.l a1,-(sp)
seg000:40800552 move.l (a0)+,(a1)+
seg000:40800554 move.l (a0),(a1)
seg000:40800556 move.l #-$20003,-(sp)
seg000:4080055C _InsetRect ; ct
seg000:4080055E move.l #$30003,-(sp)
seg000:40800564 _PenSize
seg000:40800566 move.l #$160016,-(sp)
seg000:4080056C _FrameRoundRect ; undRect
seg000:4080056E _PenNormal ; al
seg000:40800570 move.l #$100010,-(sp)
seg000:40800576 pea -$18(a2)
seg000:4080057A _FillRoundRect ; ndRect
seg000:4080057C rts
seg000:4080057C ; End of function sub_0_40800530
seg000:4080057C
seg000:4080057C ; ---------------------------------------------------------------------------
seg000:4080057E align $10
seg000:40800580
seg000:40800580 ; =============== S U B R O U T I N E =======================================
seg000:40800580
seg000:40800580
seg000:40800580 sub_0_40800580: ; CODE XREF: sub_0_40800194+80↑p
seg000:40800580 clr.w -(sp)
Assembler code
CODE:00010390 ; ===========================================================================
CODE:00010390
CODE:00010390 ; Segment type: Pure code
CODE:00010390 ; segment "CODE"
CODE:00010390
CODE:00010390 ; =============== S U B R O U T I N E =======================================
CODE:00010390
CODE:00010390 ; Attributes: noreturn bp-based frame
CODE:00010390
CODE:00010390 _main: ; CODE XREF: startup+CA↑p
CODE:00010390 ; startup:domain↑p
CODE:00010390
CODE:00010390 var_4 = -4
CODE:00010390
CODE:00010390 link a6,#-4
CODE:00010394 jsr _Init
CODE:0001039A jsr _InitTrace
CODE:000103A0
CODE:000103A0 loc_103A0: ; CODE XREF: _main+182↓j
CODE:000103A0 ; _main+18C↓j
CODE:000103A0 jsr _WaitToAnimate
CODE:000103A6 jsr _ClearControl
CODE:000103AC moveq #2,d0
CODE:000103AE move.l d0,-(sp)
CODE:000103B0 jsr sub_1E88C
CODE:000103B6 addq.l #4,sp
CODE:000103B8 moveq #4,d0
CODE:000103BA move.l d0,-(sp)
CODE:000103BC jsr sub_1E88C
CODE:000103C2 addq.l #4,sp
CODE:000103C4 jsr _PollJoy
CODE:000103CA jsr _UserIn
CODE:000103D0 tst.l (dword_2052A).l
CODE:000103D6 bne.s loc_103EA
CODE:000103D8 movea.l (_aniObj).l,a0
FLEX is the name of the Operating System for the Motorola 6800 and 6809. IDA can disassemble OS9 object and FLEX STX files
Assembler code\
TEXT:102F bcs loc_1065
TEXT:1031 leax ,u
TEXT:1033
TEXT:1033 loc_1033 * CODE XREF: start+25↓j
TEXT:1033 clr ,x+
TEXT:1035 subd #1
TEXT:1038 bhi loc_1033
TEXT:103A stu $80
TEXT:103C ldd ,s++
TEXT:103E std $B0
TEXT:1040 ldd ,s++
TEXT:1042 leax d,u
TEXT:1044 stx $82
TEXT:1046 ldd $B0
TEXT:1048 leax d,x
TEXT:104A stx $B0
TEXT:104C ldx $88
TEXT:104E OS9 F$All64 * '0' * Allocate Process/Path Descriptor
TEXT:1051 bcs loc_1065
TEXT:1053 stx $88
TEXT:1055 OS9 F$Ret64 * '1' * Return Process/Path Descriptor
TEXT:1058 leax word_16A2,pc
TEXT:105C stx $26
TEXT:105E leay word_1067,pc
TEXT:1061 OS9 F$SSvc * '2' * Service Request Table Initialization
TEXT:1064 rts
TEXT:1065 * ---------------------------------------------------------------------------
TEXT:1065
TEXT:1065 loc_1065 * CODE XREF: start+1C↑j
TEXT:1065 * start+3E↑j
TEXT:1065 jmp $6B
TEXT:1065 * End of function start
TEXT:1065
TEXT:1065 * ---------------------------------------------------------------------------
TEXT:1067 word_1067 fdb $7F00 * DATA XREF: start+4B↑r
IDA is the best disassembler for Palm Pilot programs. It supports all Palm OS versions and will even accept partially packed programs. The Palm Pilot uses a 68K processor.
The Motorola 68K family of processors is huge and very widely used. A few sample parts: MC68000, MC68010, MC68020, MC68030, MC68040, MC68330, MC68882, MC68851, MC68020EX, MC68302 Integrated Communication Processor, MC68306 68K/ColdFire, MC68331 68K/ColdFire, MC68332 68K/ColdFire, MC68336 68K/ColdFire, MC68340 68K/ColdFire, MC68360 Integrated Communication Processor, MC68F375 68K/ColdFire, MC68376 68K/ColdFire, etc.
Assembler code
code0001:00000204
code0001:00000204 ; =============== S U B R O U T I N E =======================================
code0001:00000204
code0001:00000204 ; Attributes: bp-based frame
code0001:00000204
code0001:00000204 proc sub_204() ; CODE XREF: sub_31E+A0↓p
code0001:00000204
code0001:00000204 var_68 = -$68
code0001:00000204 var_50 = -$50
code0001:00000204 arg_0 = 8
code0001:00000204 arg_8 = $10
code0001:00000204 arg_A = $12
code0001:00000204
code0001:00000204 link a6,#-$50
code0001:00000208 movem.l d3-d6/a2-a3,-(sp)
code0001:0000020C movea.l arg_0(a6),a3
code0001:00000210 move.w arg_8(a6),d0
code0001:00000214 beq.s loc_222
code0001:00000216 addi.w #-$8000,d0
code0001:0000021A clr.l d4
code0001:0000021C move.w d0,d4
code0001:0000021E bra loc_224
code0001:00000222 ; ---------------------------------------------------------------------------
code0001:00000222
code0001:00000222 loc_222: ; CODE XREF: sub_204+10↑j
code0001:00000222 moveq #0,d4
code0001:00000224
code0001:00000224 loc_224: ; CODE XREF: sub_204+1A↑j
code0001:00000224 move.w d4,-(sp)
code0001:00000226 move.l #$636F6465,-(sp)
code0001:0000022C systrap DmGet1Resource()
code0001:00000230 move.l a0,d5
code0001:00000232 addq.w #6,sp
code0001:00000234 bne.s loc_272
code0001:00000236 lea aCouldNotLoadCo(pc),a1 ; "Could not load code segment #"
In the graph view, the current function is represented as a collection of nodes linked together with edges. Nodes represent basic blocks and edges represent code cross-references between them.
Only code items are visible in the graph view, data items are hidden. To display them, switch to text mode by pressing Space. The graph view is available for the instructions belonging to functions. IDA automatically switches to text mode if the current item cannot be displayed in graph mode. It also displays a warning, which we recommend to hide away as soon as you become familiar with the concept.
The Space key can be used to toggle between the graph and text views.
Please select one of the following topic to learn more about graphs:
There are two concepts: the current node and the selected nodes. The node with the keyboard cursor is considered as the current node. If the user clicks on the graph background, the keyboard cursor will disappear and there will be no current node. In the absence of the current node, IDA uses the last valid address for the user commands (like rename and similar commands). For example, if the user invokes the 'rename' command by pressing N and if there is no current node, IDA will still display the 'rename' dialog box for the last valid address.
Clicking on the node title will make the clicked node the current one. The keyboard cursor will be moved to the clicked node. Any selection of the disassembly text will be cancelled upon switching the current node.
The default color for the title of the current node is dark gray.
In addition to the obvious method of clicking with the mouse left-button to select the current node, IDA supports many other methods:
- Clicking with the mouse wheel selects the clicked node and centers
the clicked point in the window
- Keyboard arrows can be used to move from one node to another. When
the keyboard cursor reaches the node border and the user presses
the arrow once more, IDA finds a node in the specified direction
and makes it the current.
- The Ctrl-Up key displays the list of nodes referring to the current
node and allows jumping to them. The Ctrl-Down key does the same
with the referenced nodes.
- Pressing '5' on the keypad positions the keyboard cursor at
the window center
- Left-click on an edge makes one of its ends (source or destination)
the current node. The node farthest from the click point is selected
- Ctrl-click on an edge jumps to its destination
- Alt-click on an edge jumps to its source
Clicking with the mouse on the node text (disassembly listing) has the usual meaning: IDA will move the keyboard cursor to the clicked location. It is also possible to select the disassembly listing within one node.
Many graph operations are applied to the selected nodes. The current node is considered to be part of the node selection for all operations.
The graph nodes can be selected using the mouse. To select many nodes at once, press and hold the Ctrl key during the mouse operation. The Alt key removes nodes from the current selection.
Internally, IDA keeps track of the selected nodes and edge layout points. Edge layout points are the points where edges are bent. If the current selection is moved in the graph, the selected edge layout points are moved too.
The default color for the title of the selected nodes is light gray. Other node titles are displayed with white color.
See also proximity view.
Each node has a title bar with title buttons. The title bar can be used to displace the node. Displacing nodes or edges creates a custom layout. The custom layouts are automatically saved in the database. If there is a custom layout for the function, IDA never destroys it without your explicit permission. This behavior has its drawbacks: when the nodes are resized (because of added comments, for example), the old layout will be retained and the nodes could overlap. In this case, the user can ask IDA to redo the layout or manually move the overlapping nodes. To avoid displacing nodes inadvertently, turn on the lock graph layout option.
The user can also click on the edge layout points (edge bending points) and drag them. If two edge layout points are too close, one of them will be deleted. To create new edge layout points, use Shift-DoubleClick on the edge.
The graph can be zoomed in and out. There are several ways of zooming the graph:
- Use Ctrl-Wheel. The current mouse position will be the zoom center
point (i.e. this point will not move during the zoom operation)
- Use the predefined 'Zoom 100%' and 'Fit window' commands. They are
available from the right-click menu or by their shortcuts: '1' and
'W' respectively. The current mouse position is the zoom center
point for the 'zoom 100%' command.
- Use Ctrl-KeypadPlus or Ctrl-KeypadMinus keys. The current keyboard
cursor is the zoom center for these commands.
- Use Ctrl-Shift-drag. This lets you draw a rectangle to which IDA
will zoom.
There are two options linked to the graph zooming:
- Auto fit graph to window: will fit the current graph to the window
size. Default: off
- Fit window max zoom level 100%: the 'fit window' command does not
use zoom levels higher than 100%. Default: on
The zoom level is never greater than 1000% and less than 1%. IDA remembers the current zoom level for each location in the navigation history.
See also proximity view.
The user can pan (shift) the graph by clicking with the left mouse button on the graph background and dragging it. In the rare case when there is no graph background visible on the screen, the Shift-click can be used to move the graph. This can happen on very high zoom levels, when the current node occupies the whole window.
The mouse wheel scrolls the graph vertically. If the Alt key is pressed, it will scroll the graph horizontally.
The Page Up and Page Down keys scroll the graph vertically. The keyboard arrows can scroll the graph if they reach the node border and cannot jump to another node in the specified direction.
Scrolling the graph does not change the keyboard cursor position. As soon as the graph is refreshed on the screen, IDA will scroll the graph so that the keyboard cursor becomes visible.
See also proximity view.
Any number of nodes can be collapsed into a single synthetic node. Such a synthetic node contains a user-provided text instead of normal disassembly listing. The 'group' command is available from the right-click menu if there are selected nodes.
Even a single node can be used to create a group. This feature can be used to collapse huge nodes into something manageable or to hide a group that consists of one node.
After creating a group, IDA automatically refreshes the graph layout. If a custom layout was present, it is not applied to the reduced graph. However, the existing custom layout is not destroyed and will be re-used as soon as the user switches to the full graph by deleting the group or uncollapsing it.
The node groups can be nested: synthetic nodes can be used to create other groups. This feature allows reducing the graph into a single node. Each node can belong to only one group at a time.
Groups can be uncollapsed to display the original node content. The node frames of the current uncollapsed group (the one with the mouse pointer) are displayed with a special color. The default group frame color is yellow. This way, the existing uncollapsed groups can be visualized by hovering the mouse over the graph nodes.
There are also commands to collapse and uncollapse all groups in the graph. They are available from the right click menu.
To edit the contents of synthetic nodes, use the 'set node text' button on the node title. The 'rename' command can be used too.
IDA automatically remembers the graph groups and their state for each function.
IDA has a small graph overview window. It displays the whole graph in the zoom out form and gives the user an idea about which part of the graph is visualized on the main window.
Clicking on the graph overview window visualizes different parts of the graph in the main window. It is also possible to click and drag the focus frame - the main window will be refreshed accordingly.
The graph overview window is visible only in the graph view node. As soon as another non-modal window gets focus, the graph overview is closed. It automatically opens when a graph view is activated.
The graph overview is displayed by default. To hide it, right click on the main toolbar background and select Navigation, Graph overview menu item.
The graph overview window can be resized to accommodate really huge graphs.
Graph edges can have several colors. In graph view:
- Blue: a normal edge
- Green: if the jump is taken (its condition is satisfied)
- Red: if the jump is not taken
- Blinking: when in the debugger, the edge that will be followed blinks
And, in proximity view:
- Blue: Code cross-reference edge
- Gray: Data cross-reference edge
IDA highlights the current mouse items. If the mouse is hovered over an edge, it is highlighted. If the mouse is hovered over a node, all adjacent edges are highlighted. To turn off the highlighting, specify the 'current edge' color as an undefined custom color.
The 'highlighted edge' and 'foreign node' colors are not used yet.
See also proximity view.
Use graph view by default
IDA switches to graph mode for each 'jump' command.
Enable graph animation
Animate the graph layout, movement, and group collapsing/uncollapsing.
While animation takes time, it gives the user some idea what's going on.
Draw node shadows
Display shadows for each graph node. Shadows are not displayed
for really huge or ridiculously small nodes.
Auto fit graph into window
Zoom the graph so that it occupies the whole window.
Fit window max zoom level 100%
The 'fit window' command maximal zoom level is 100%.
Re-layout graph if nodes overlap
IDA recomputes the graph layout if a node overlap is detected.
The presence of a custom layout (if the user has displaced
some graph nodes) effectively turns off this option.
Re-layout graph upon screen refresh
IDA recomputes the graph layout at each screen refresh.
Turning this option off accelerates IDA but then
a manual layout might be required after some operations.
Truncate at the right margin
All nodes at truncated at the right margin. The right margin
is specified in the Options, General, Disassembly tab.
This option narrows the graph but hides some information
by truncating long lines.
Lock graph layout
Locks the graph layout by ignoring attempts to displace
nodes. This prevents the creation of custom layouts that might lead
to ugly graph layouts when nodes change their sizes.
PROXIMITY VIEW
Show data references
Show data cross-referenced items in proximity view.
Hide library functions
Do not show data or code cross-references to library functions,
only show cross-referenced local functions.
Unlimited children recursion
Recurse until there are no more callees (children) of the currently
selected central node and all of his children.
Recurse into library functions
Displays children data or code cross-references from library
functions.
Max parents recursion
Maximum recursion level for displaying parents of the currently
selected central node. The value '0' disables parents recursion.
Max children recursion
Maximum recursion level for displaying children of the currently
selected central node. The value '0' means no maximum recursion
level.
Max nodes per level
Maximum number of nodes to show per level of children and parents.
See also: right margin
The following actions can improve the speed of graph drawing:
- Turn off animation
- Turn off node shadows
- Specify identical top and bottom background colors
- Turn off 'relayout' options (might lead to stale graph contents)
- Turn off the graph overview window
Printing the graph: the 'print' command is available at the graph toolbar. The graph toolbar is visible by default but if you have saved a custom desktop configuration in the past, it will not be visible. To set it on, check the View, Toolbars, Graph view menu item.
Working with huge graphs: do not forget about the node groups and use them to make the graph simpler.
IDA is the best disassembler for Amiga hunk files. The Motorola 68K family of processors is huge and very widely used. A few sample parts: MC68000, MC68010, MC68020, MC68030, MC68040, MC68330, MC68882, MC68851, MC68020EX, MC68302 Integrated Communication Processor, MC68306 68K/ColdFire, MC68331 68K/ColdFire, MC68332 68K/ColdFire, MC68336 68K/ColdFire, MC68340 68K/ColdFire, MC68360 Integrated Communication Processor, MC68F375 68K/ColdFire, MC68376 68K/ColdFire, etc….
Assembler code
CODE:00010190
CODE:00010190 ; =============== S U B R O U T I N E =======================================
CODE:00010190
CODE:00010190
CODE:00010190 waitmsg: ; CODE XREF: startup+DE↑p
CODE:00010190 lea $5C(a4),a0
CODE:00010194 jsr -$180(a6)
CODE:00010198 lea $5C(a4),a0
CODE:0001019C jsr -$174(a6)
CODE:000101A0 rts
CODE:000101A0 ; End of function waitmsg
CODE:000101A0
CODE:000101A2
CODE:000101A2 ; =============== S U B R O U T I N E =======================================
CODE:000101A2
CODE:000101A2
CODE:000101A2 openDOS: ; CODE XREF: startup:fromCLI↑p
CODE:000101A2 ; startup:fromWorkbench↑p
CODE:000101A2
CODE:000101A2 ; FUNCTION CHUNK AT CODE:00010176 SIZE 0000001A BYTES
CODE:000101A2
CODE:000101A2 clr.l (_DOSBase).l
CODE:000101A8 lea (DOSName).l,a1 ; "dos.library"
CODE:000101AE move.l #$1E,d0
CODE:000101B4 jsr -$228(a6)
CODE:000101B8 move.l d0,(_DOSBase).l
CODE:000101BE beq.s noDOS
CODE:000101C0 rts
CODE:000101C0 ; End of function openDOS
CODE:000101C0
CODE:000101C0 ; ---------------------------------------------------------------------------
CODE:000101C2 align 4
CODE:000101C2 ; end of 'CODE'
CODE:000101C2
DATA:000101D0 ; ===========================================================================
DATA:000101D0
DATA:000101D0 ; Segment type: Pure data
DATA:000101D0 ; segment "DATA"
DATA:000101D0 VerRev: dc.l startup
These NEC microcontrollers are available under many part numbers, which are all supported by the IDA Disassembler. IDA is the most powerful disassembler available for that line.
uPD78075B, uPD78078, uPD78078Y, uPD78070A, uPD78070AY, uPD780058, uPD780058Y, uPD780065, uPD780078, uPD780078Y, uPD780034AS, uPD780024AS uPD780034A, uPD780024A, uPD780034AY, uPD780024AY, uPD780988, uPD780208, uPD780232, uPD78044F, uPD780354, uPD780344, uPD780354Y, uPD780344Y, uPD780338, uPD780328, uPD780318, uPD780308, uPD780308Y, uPD78064B, uPD78064, uPD78064Y, uPD78098B, uPD780702Y, uPD780833Y, uPD780958, uPD780852, uPD780828B, uPD780101, uPD780102, uPD780103, uPD78F010
uPD789046, uPD789026, uPD789074, uPD789088, uPD789062, uPD789052, uPD789177Y, uPD789167Y, uPD789177, uPD789167, uPD789134A, uPD789124A, uPD789114A, uPD789104A, uPD789842, uPD789417A, uPD789407A, uPD789456, uPD789446, uPD789436, uPD789426, uPD789316, uPD789306, uPD789467, uPD789327, uPD789835, uPD789830, uPD789479, uPD789489, uPD789800, uPD789862, uPD789861, uPD789860, uPD789850, uPD789871, uPD789881, uPD78F9026, uPD78F9046, uPD78F9076, uPD78F9116, uPD78F9136, uPD78F9177, uPD78F9306, uPD78F9316, uPD78F9328, uPD78F9418, uPDF78F9436, uPD78F9456, uPD78F9468, uPD78F9478, uPD78F9488, uPD78F9801, uPD78F9842, uPD78F9850.
Assembler code
ROM_:00B9 set1 CY
ROM_:00BA set1 byte_FED3.00h
ROM_:00BC set1 byte_FED7.00h
ROM_:00BE set1 byte_FEDB.00h
ROM_:00C0 set1 byte_FEDF.00h
ROM_:00C2 set1 byte_FEDD.00h
ROM_:00C4 callt [word_54]
ROM_:00C5 set1 CY
ROM_:00C6 incw AX
ROM_:00C7 incw DE
ROM_:00C8 add byte_FE8C, #90h
ROM_:00CB decw DE
ROM_:00CC sub byte_FE9C, #00h
ROM_:00CF movw AX, #1202h
ROM_:00D2 set1 CR00.00h ; 16-bit timer capture/compare register 00
ROM_:00D4 callt [word_64]
ROM_:00D5 set1 SIO30.00h ; Serial I/O shift register 30
ROM_:00D7 callt [word_64]
ROM_:00D8 set1 byte_FE2A.00h
ROM_:00DA callt [word_64]
ROM_:00DB set1 byte_FE3A.00h
ROM_:00DD callt [word_64]
ROM_:00DE set1 byte_FE4A.00h
ROM_:00E0 callt [word_64]
ROM_:00E1 set1 byte_FE5A.00h
ROM_:00E3 callt [word_64]
ROM_:00E4 set1 byte_FE6A.00h
ROM_:00E6 callt [word_64]
ROM_:00E7 set1 byte_FE7A.00h
ROM_:00E9 callt [word_64]
ROM_:00EA set1 CR00.00h ; 16-bit timer capture/compare register 00
ROM_:00EA ; ---------------------------------------------------------------------------
ROM_:00EC .db 15h
ROM_:00ED .db 0Ah
ROM_:00EE .db 1Ah
IDA is probably the most powerful disassembler available for the INTEL 80196 line of micro-processors. IDA disassemble the Intel 80196, 80196NP and its variations.
Assembler code
INTMEM:007C db 0FFh ; ÿ
INTMEM:007D db 0FFh ; ÿ
INTMEM:007E db 0FFh ; ÿ
INTMEM:007F db 0FFh ; ÿ
INTMEM:0080 ; ---------------------------------------------------------------------------
INTMEM:0080 skip INTMEM_FF
INTMEM:0082 clr INTMEM_20
INTMEM:0084 not INTMEM_20
INTMEM:0086 neg INTMEM_20
INTMEM:0088 xch INTMEM_20, INTMEM_20
INTMEM:008B dec INTMEM_20
INTMEM:008D ext INTMEM_22
INTMEM:008F inc INTMEM_20
INTMEM:0091 shr INTMEM_20, #8
INTMEM:0094 shr INTMEM_20, INTMEM_FF
INTMEM:0097 shl INTMEM_20, INTMEM_FF
INTMEM:009A shra INTMEM_20, INTMEM_FF
INTMEM:009D xch INTMEM_20, 55h[INTMEM_20]
INTMEM:00A1 xch INTMEM_20, 3030h[INTMEM_20]
INTMEM:00A6 shrl INTMEM_22, INTMEM_FF
INTMEM:00A9 shll INTMEM_22, INTMEM_FF
INTMEM:00AC shral INTMEM_22, INTMEM_FF
INTMEM:00AF norml INTMEM_22, INTMEM_FF
INTMEM:00B2 clrb INTMEM_FF
INTMEM:00B4 notb INTMEM_FF
INTMEM:00B6 negb INTMEM_FF
INTMEM:00B8 xchb INTMEM_FF, INTMEM_FF
INTMEM:00BB decb INTMEM_FF
INTMEM:00BD extb INTMEM_20
INTMEM:00BF incb INTMEM_FF
INTMEM:00C1 shrb INTMEM_FF, INTMEM_FF
INTMEM:00C4 shlb INTMEM_FF, INTMEM_FF
INTMEM:00C7 shrab INTMEM_FF, INTMEM_FF
INTMEM:00CA xchb INTMEM_FF, 55h[INTMEM_20]
INTMEM:00CE sjmp INTMEM_D2
INTMEM:00CE ; ---------------------------------------------------------------------------
The 68HC12 is a Motorola microcontroller that has been widely used by the automotive industry. IDA is the most powerful disassembler available for the 68HC12 family and a car tuner’s favourite. Typical parts include the 68HC812A4, 68HC912B32, 68HC912BC32, 68HC12BC32, 68HC12BE32, 68HC12D60, 68HC912D60, 68HC912D60A, 68HC912D60C, 68HC912D60P, 68HC912DG128A, 68HC912DG128C, 68HC912DG128P, 68HC912DT128A, 68HC912DT128C, 68HC912DT128P and, in its automotive versions, 68HC912B32, 68HC912BC32, 68HC12BC32, 68HC12BE32, 68HC912D60A, 68HC912D60C, 68HC912D60P, 68HC12D60, 68HC912DG128A, 68HC912DG128C, 68HC912DG128P, 68HC912DT128A, 68HC912DT128C, 68HC912DT128P.
Assembler code
.text:00000042
.text:00000042 ; =============== S U B R O U T I N E =======================================
.text:00000042
.text:00000042
.text:00000042 L26: ; CODE XREF: L26:L87↓p
.text:00000042 addd symbol141
.text:00000045
.text:00000045 L27:
.text:00000045 addd $76,x
.text:00000048
.text:00000048 L28:
.text:00000048 anda #$5A ; 'Z'
.text:0000004A
.text:0000004A L29:
.text:0000004A anda Z46
.text:0000004C
.text:0000004C L30:
.text:0000004C anda $63,x
.text:0000004F
.text:0000004F L31:
.text:0000004F anda symbol51
.text:00000052
.text:00000052 L32:
.text:00000052 anda $9F,x
.text:00000055
.text:00000055 L33:
.text:00000055 andb #$C9 ; 'É'
.text:00000057
.text:00000057 L34:
.text:00000057 andb Z154
.text:00000059
.text:00000059 L35:
.text:00000059 andb $66,x
.text:0000005C
.text:0000005C L36:
.text:0000005C andb symbol50
IDA is the most powerful disassembler for 68K UNIX COFF Files. The Motorola 68K family of processors is huge and very widely used. A few sample parts: MC68000, MC68010, MC68020, MC68030, MC68040, MC68330, MC68882, MC68851, MC68020EX, MC68302 Integrated Communication Processor, MC68306 68K/ColdFire, MC68331 68K/ColdFire, MC68332 68K/ColdFire, MC68336 68K/ColdFire, MC68340 68K/ColdFire, MC68360 Integrated Communication Processor, MC68F375 68K/ColdFire, MC68376 68K/ColdFire, etc.
Assembler code
.text:000001AC
.text:000001AC ; =============== S U B R O U T I N E =======================================
.text:000001AC
.text:000001AC ; Attributes: bp-based frame
.text:000001AC
.text:000001AC global new_main
.text:000001AC new_main: ; CODE XREF: main+16↑p
.text:000001AC
.text:000001AC var_C = -$C
.text:000001AC
.text:000001AC link a6,#-$10
.text:000001B2 movem.l 0,$10+var_C(sp)
.text:000001B8 fmovem 0,$10+var_C.l(sp)
.text:000001C2
.text:000001C2 qwerty: ; CODE XREF: new_main+96↓j
.text:000001C2 pea var_C+4(a6)
.text:000001C6 pea var_C+8(a6)
.text:000001CA move.l #aLdLd,-(sp) ; "%ld %ld"
.text:000001D0 jsr (scanf).l
.text:000001D6 adda.w #$C,sp
.text:000001DA tst.l var_C+8(a6)
.text:000001DE bne.w loc_200
.text:000001E2 tst.l var_C+4(a6)
.text:000001E6 bne.w loc_200
.text:000001EA move.l (fignqm).l,d0
.text:000001F0 add.l (fignqn).l,d0
.text:000001F6 add.l (fignqr).l,d0
.text:000001FC bra.w loc_246
.text:00000200 ; ---------------------------------------------------------------------------
.text:00000200
.text:00000200 loc_200: ; CODE XREF: new_main+32↑j
.text:00000200 ; new_main+3A↑j
.text:00000200 move.l var_C+4(a6),(sp)
.text:00000204 move.l var_C+8(a6),-(sp)
.text:00000208 jsr (b1).l
IDA is the most powerful disassembler available for the 6803 microcontroller family.
Assembler code
RAM:0098 fcb 3
RAM:0099 fcb $E8 ; è
RAM:009A fcb $C8 ; È
RAM:009B fcb 0
RAM:009C ; ---------------------------------------------------------------------------
RAM:009C eorb #$FF
RAM:009E eorb byte_64
RAM:00A1 eorb 0,x
RAM:00A3 eorb $FF,x
RAM:00A5 eorb byte_3E8
RAM:00A8 ldaa #0
RAM:00AA ldaa #$FF
RAM:00AC ldaa byte_64
RAM:00AF ldaa 0,x
RAM:00B1 ldaa $FF,x
RAM:00B3 ldaa byte_3E8
RAM:00B6 ldab #0
RAM:00B8 ldab #$FF
RAM:00BA ldab byte_64
RAM:00BD ldab 0,x
RAM:00BF ldab $FF,x
RAM:00C1 ldab byte_3E8
RAM:00C4 oraa #0
RAM:00C6 oraa #$FF
RAM:00C8 oraa byte_64
RAM:00CB oraa 0,x
RAM:00CD oraa $FF,x
RAM:00CF oraa byte_3E8
RAM:00D2 orab #0
RAM:00D4 orab #$FF
RAM:00D6 orab byte_64
RAM:00D9 orab 0,x
RAM:00DB orab $FF,x
RAM:00DD orab byte_3E8
RAM:00E0 staa byte_64
Assembler code
ROM:0034 ; ---------------------------------------------------------------------------
ROM:0034
ROM:0034 loc_34: ; CODE XREF: TIMER+CF↓j
ROM:0034 ar = $37
ROM:0035 dm(byte_1003F4F) = ar
ROM:0036 jump loc_25C3
ROM:0037 ; ---------------------------------------------------------------------------
ROM:0037 imask = $240
ROM:0038
ROM:0038 loc_38: ; CODE XREF: TIMER+12↓j
ROM:0038 ar = dm(byte_1003E33)
ROM:0039 ar = ar - 1
ROM:003A if lt jump loc_38
ROM:003B imask = $250
ROM:003C
ROM:003C loc_3C: ; CODE XREF: TIMER+16↓j
ROM:003C ar = dm(byte_1003E33)
ROM:003D ar = ar - 2
ROM:003E if lt jump loc_3C
ROM:003F imask = $269
ROM:0040
ROM:0040 loc_40: ; CODE XREF: TIMER+1A↓j
ROM:0040 ar = dm(byte_1003F12)
ROM:0041 ar = ar + 0
ROM:0042 if eq jump loc_40
ROM:0043 jump loc_6E
ROM:0044 ; ---------------------------------------------------------------------------
ROM:0044
ROM:0044 loc_44: ; CODE XREF: TIMER+2F↓j
ROM:0044 ; TIMER+38↓j ...
ROM:0044 ena timer
ROM:0045 ay0 = dm(byte_1002CD2)
ROM:0046 ax0 = dm(byte_1002CD3)
ROM:0047 ar = ay0 - ax0
ROM:0048 if ge jump loc_4B
You can enter any 'C' expression with constants. Long arithmetic will be used for calculations.
In these expressions, you can use all the names that you have created in your program.
Assembler code
.text:0000109C
.text:0000109C # =============== S U B R O U T I N E =======================================
.text:0000109C
.text:0000109C # Attributes: bp-based frame
.text:0000109C
.text:0000109C .global ArcMain
.text:0000109C ArcMain: # CODE XREF: main+C↑p
.text:0000109C
.text:0000109C arg_0 = 0
.text:0000109C arg_4 = 4
.text:0000109C
.text:0000109C st blink, [sp,arg_4]
.text:000010A0 st fp, [sp,arg_0]
.text:000010A4 mov fp, sp
.text:000010A8 sub sp, sp, 0x10
.text:000010AC mov r0, state_ls
.text:000010B4 bl.d Core_LocalClear
.text:000010B8 mov r1, 0x18
.text:000010BC mov r2, _stack_start
.text:000010C4 mov r0, 0x12345678
.text:000010CC sub r1, r1, r1
.text:000010D0 mov lp_count, 0x20 # ' '
.text:000010D4 lp loc_10E4
.text:000010D8 add r12, r2, r1
.text:000010DC st r0, [r12]
.text:000010E0 add r1, r1, 4
.text:000010E4
.text:000010E4 loc_10E4: # CODE XREF: ArcMain+38↑j
.text:000010E4 mov r0, 0xFFFFFFFF
.text:000010E8 sr r0, [0x23] # '#'
.text:000010EC sr 0, COUNT # '!' # Enhanced Timer 0 Timer 0 Count value
.text:000010F4 sr 2, CONTROL # '"' # Enhanced Timer 0 Timer 0 Control value
.text:000010FC bl Platform_Initialize
.text:00001100 bl Core_Loop
.text:00001104 ld blink, [fp,arg_4]
Assembler code
.text:100001CC BL Open__5RFileR3RFsRC6TDesC8Ui ; RFile::Open(RFs &,TDesC8 const &,uint)
.text:100001D0 CMP R0, #0
.text:100001D4 BEQ loc_100001E8
.text:100001D8 MOV R0, R10
.text:100001DC BL Close__11RHandleBase ; RHandleBase::Close(void)
.text:100001E0
.text:100001E0 loc_100001E0 ; CODE XREF: sub_1000014C+6C↑j
.text:100001E0 ; sub_1000014C+F8↓j
.text:100001E0 MOV R0, #0xFFFFFFFF
.text:100001E4 B loc_100007C4
.text:100001E8 ; ---------------------------------------------------------------------------
.text:100001E8
.text:100001E8 loc_100001E8 ; CODE XREF: sub_1000014C+88↑j
.text:100001E8 ADD R5, R10, #0xC
.text:100001EC ADD R1, R10, #0x124
.text:100001F0 MOV R0, R5
.text:100001F4 BL Modified__C5RFileR5TTime ; RFile::Modified(TTime &)
.text:100001F8 MOV R3, #0x18
.text:100001FC STR R3, [SP,#0x94+var_24]
.text:10000200 ADD R2, SP, #0x94+var_24
.text:10000204 MOV R1, #1
.text:10000208 MOV R0, R5
.text:1000020C BL Seek__C5RFile5TSeekRi ; RFile::Seek(TSeek,int &)
.text:10000210 ADD R4, SP, #0x94+var_30
.text:10000214 MOV R3, #4
.text:10000218 MOV R2, R3
.text:1000021C ADD R1, R10, #0x1C
.text:10000220 MOV R0, R4
.text:10000224 BL __5TPtr8PUcii
.text:10000228 MOV R1, R4
.text:1000022C MOV R0, R5
.text:10000230 BL Read__C5RFileR5TDes8 ; RFile::Read(TDes8 &)
.text:10000234 LDR R0, [R10,#0x1C]
.text:10000238 BL __builtin_vec_new
.text:1000023C STR R0, [R10,#0x20]
Assembler code
.text:00008270
.text:00008270 ; =============== S U B R O U T I N E =======================================
.text:00008270
.text:00008270 ; Attributes: library function noreturn bp-based frame
.text:00008270
.text:00008270 EXPORT _start
.text:00008270 _start ; DATA XREF: LOAD:00008018↑o
.text:00008270
.text:00008270 structors = -0x14
.text:00008270 var_8 = -8
.text:00008270
.text:00008270 LDR R12, =(_GLOBAL_OFFSET_TABLE_ - 0x828C)
.text:00008274 PUSH {R11,LR}
.text:00008278 LDR R3, =(__PREINIT_ARRAY___ptr - 0x9FEC)
.text:0000827C ADD R11, SP, #4
.text:00008280 SUB SP, SP, #0x10
.text:00008284 ADD R12, PC, R12 ; _GLOBAL_OFFSET_TABLE_
.text:00008288 LDR R3, [R12,R3] ; __PREINIT_ARRAY__
.text:0000828C STR R3, [R11,#structors]
.text:00008290 LDR R3, =(__INIT_ARRAY___ptr - 0x9FEC)
.text:00008294 ADD R0, R11, #4 ; raw_args
.text:00008298 LDR R3, [R12,R3] ; __INIT_ARRAY__
.text:0000829C STR R3, [R11,#structors.init_array]
.text:000082A0 LDR R3, =(__FINI_ARRAY___ptr - 0x9FEC)
.text:000082A4 MOV R1, #0 ; onexit
.text:000082A8 LDR R3, [R12,R3] ; __FINI_ARRAY__
.text:000082AC STR R3, [R11,#structors.fini_array]
.text:000082B0 LDR R3, =(__CTOR_LIST___ptr - 0x9FEC)
.text:000082B4 LDR R3, [R12,R3] ; __CTOR_LIST__
.text:000082B8 STR R3, [R11,#var_8]
.text:000082BC LDR R3, =(main_ptr - 0x9FEC)
.text:000082C0 LDR R2, [R12,R3] ; main ; slingshot
.text:000082C4 SUB R3, R11, #-structors ; structors
.text:000082C8 BL __libc_init
.text:000082CC ; ---------------------------------------------------------------------------
.text:000082CC SUB SP, R11, #4
Assembler code
.text:0000000120001F30 br loc_120001FD0
.text:0000000120001F34 # ---------------------------------------------------------------------------
.text:0000000120001F34
.text:0000000120001F34 loc_120001F34: # CODE XREF: main+274↑j
.text:0000000120001F34 addq $sp, 0xB8, $1 # '¸'
.text:0000000120001F38 ldq $16, 0x220+stream($sp) # stream
.text:0000000120001F3C ldq $17, ((off_120103268 - 0x12010B130) and 0xFFFF)($gp)# off_120103268 # format
.text:0000000120001F40 mov $1, $18
.text:0000000120001F44 ldq $27, ((fscanf_ptr - 0x12010B130) and 0xFFFF)($gp)# fscanf_ptr
.text:0000000120001F48 jsr $26, ($27), 0x1620# fscanf
.text:0000000120001F4C ldah $gp, 0x11($26)
.text:0000000120001F50 lda $gp, -0x6E1C($gp)
.text:0000000120001F54 # gp = 000000012010B130
.text:0000000120001F54 mov $0, $1
.text:0000000120001F58 subq $1, 1, $2
.text:0000000120001F5C bne $2, loc_120001FAC
.text:0000000120001F60 addq $sp, 0xB8, $1 # '¸'
.text:0000000120001F64 mov $1, $16 # s1
.text:0000000120001F68 ldq $17, ((s2 - 0x12010B130) and 0xFFFF)($gp)# s2 # s2
.text:0000000120001F6C ldq $27, ((strcmp_ptr - 0x12010B130) and 0xFFFF)($gp)# strcmp_ptr
.text:0000000120001F70 jsr $26, ($27), 0x16DC# strcmp
.text:0000000120001F74 ldah $gp, 0x11($26)
.text:0000000120001F78 lda $gp, -0x6E44($gp)
.text:0000000120001F7C # gp = 000000012010B130
.text:0000000120001F7C mov $0, $1
.text:0000000120001F80 addq $1, 0, $2
.text:0000000120001F84 bne $2, loc_120001F94
.text:0000000120001F88 ldq $1, ((clockport_ptr - 0x12010B130) and 0xFFFF)($gp)# clockport_ptr
.text:0000000120001F8C lda $2, 0x170($31)
.text:0000000120001F90 stl $2, 0($1)
.text:0000000120001F94
.text:0000000120001F94 loc_120001F94: # CODE XREF: main+2CC↑j
.text:0000000120001F94 ldq $16, 0x220+stream($sp) # stream
.text:0000000120001F98 ldq $27, ((fclose_ptr - 0x12010B130) and 0xFFFF)($gp)# fclose_ptr
.text:0000000120001F9C jsr $26, ($27), 0x1698# fclose
Assembler code
.text:100097D8 ADD R4, R4, #0x38 ; '8'
.text:100097DC MOV R2, #0x18
.text:100097E0 MOV R1, R4
.text:100097E4 MOV R0, R5
.text:100097E8 BL Copy__10TBufCBase8RC10TBufCBase8i ; TBufCBase8::Copy(TBufCBase8 const &,int)
.text:100097EC LDR R3, [R4,#0x1C]
.text:100097F0 STR R3, [R5,#0x1C]
.text:100097F4 LDR R3, [R4,#0x20]
.text:100097F8 STR R3, [R5,#0x20]
.text:100097FC LDR R3, [R4,#0x24]
.text:10009800 STR R3, [R5,#0x24]
.text:10009804 ADD LR, R7, #0x1540
.text:10009808 ADD LR, LR, #0x30 ; '0'
.text:1000980C ADD R12, SP, #0x50+var_C
.text:10009810 LDM R12!, {R0-R3}
.text:10009814 STM LR!, {R0-R3}
.text:10009818 MOV R1, #4
.text:1000981C ADD R0, R7, #0x18
.text:10009820 BL Connect__3RFsi ; RFs::Connect(int)
.text:10009824 BL LeaveIfError__4Useri ; User::LeaveIfError(int)
.text:10009828 BL Static__7CCoeEnv ; CCoeEnv::Static(void)
.text:1000982C MOV R1, R5
.text:10009830 BL CreateScreenFontL__7CCoeEnvRC9TFontSpec ; CCoeEnv::CreateScreenFontL(TFontSpec const &)
.text:10009834 LDR R3, =0x158C
.text:10009838 STR R0, [R7,R3]
.text:1000983C MOV R1, #0
.text:10009840 MOV R0, #0x18
.text:10009844 BL __nw__5CBaseUi6TLeave ; CBase::__nw(uint,TLeave)
.text:10009848 SUBS R4, R0, #0
.text:1000984C BEQ loc_1000986C
.text:10009850 MOV R3, #0xA
.text:10009854 MOV R2, #0x10
.text:10009858 LDR R1, =NewL__8CBufFlati ; CBufFlat::NewL(int)
.text:1000985C MOV R0, R4
.text:10009860 BL __13CArrayFixBasePFi_P8CBufBaseii
Assembler code
__text:00002914 STR R3, [SP,#0x14+var_8]
__text:00002918 MOV R3, #0
__text:0000291C STRB R3, [SP,#0x14+var_1]
__text:00002920 MOV R0, #0xE
__text:00002924 BL __keymgr_get_and_lock_processwide_ptr
__text:00002928 MOV R3, R0
__text:0000292C STR R3, [SP,#0x14+var_C]
__text:00002930 LDR R3, [SP,#0x14+var_C]
__text:00002934 CMP R3, #0
__text:00002938 BEQ loc_296C
__text:0000293C LDR R3, [SP,#0x14+var_C]
__text:00002940 LDRB R3, [R3,#2]
__text:00002944 STRB R3, [SP,#0x14+var_1]
__text:00002948 LDR R2, [SP,#0x14+var_C]
__text:0000294C MOV R3, #1
__text:00002950 STRB R3, [R2,#2]
__text:00002954 LDR R3, [SP,#0x14+var_C]
__text:00002958 LDR R3, [R3,#4]
__text:0000295C STR R3, [SP,#0x14+var_8]
__text:00002960 MOV R0, #0xE
__text:00002964 LDR R1, [SP,#0x14+var_C]
__text:00002968 BL __keymgr_set_and_unlock_processwide_ptr
__text:0000296C
__text:0000296C loc_296C ; CODE XREF: sub_28F8+40↑j
__text:0000296C LDR R3, [SP,#0x14+var_10]
__text:00002970 LDR R3, [R3,#4]
__text:00002974 CMP R3, #0
__text:00002978 BEQ loc_2998
__text:0000297C LDR R3, [SP,#0x14+var_10]
__text:00002980 LDR R2, [R3]
__text:00002984 LDR R3, [SP,#0x14+var_10]
__text:00002988 LDR R3, [R3,#8]
__text:0000298C MOV R0, R3
__text:00002990 BLX R2
__text:00002994 B loc_29A4
Assembler code
__text:0000309C
__text:0000309C ; =============== S U B R O U T I N E =======================================
__text:0000309C
__text:0000309C ; Attributes: bp-based frame
__text:0000309C
__text:0000309C ; void __cdecl -[SMSApplication showNextMessage](SMSApplication *self, SEL)
__text:0000309C __SMSApplication_showNextMessage_ ; DATA XREF: __objc_const:000101B8↓o
__text:0000309C PUSH {R4-R7,LR}
__text:0000309E ADD R7, SP, #0xC
__text:000030A0 PUSH.W {R8}
__text:000030A4 SUB SP, SP, #8
__text:000030A6 MOV R4, R0
__text:000030A8 MOV R0, #(selRef_sharedConversationList - 0x30BC)
__text:000030B0 MOV R2, #(classRef_CKConversationList - 0x30BE)
__text:000030B8 ADD R0, PC ; selRef_sharedConversationList
__text:000030BA ADD R2, PC ; classRef_CKConversationList
__text:000030BC LDR R1, [R0] ; "sharedConversationList"
__text:000030BE LDR R0, [R2] ; _OBJC_CLASS_$_CKConversationList ; id
__text:000030C0 BLX _objc_msgSend
__text:000030C4 MOV R1, #(selRef_activeConversations - 0x30D0)
__text:000030CC ADD R1, PC ; selRef_activeConversations
__text:000030CE LDR R1, [R1] ; "activeConversations"
__text:000030D0 BLX _objc_msgSend
__text:000030D4 MOV R5, #(dword_11F80 - 0x30E8)
__text:000030DC MOV R1, #(selRef_objectAtIndex_ - 0x30EA)
__text:000030E4 ADD R5, PC ; dword_11F80
__text:000030E6 ADD R1, PC ; selRef_objectAtIndex_
__text:000030E8 LDR R2, [R5]
__text:000030EA LDR R1, [R1] ; "objectAtIndex:"
__text:000030EC BLX _objc_msgSend
__text:000030F0 MOV R6, R0
__text:000030F2 MOV R0, #(off_1011C - 0x30FE)
__text:000030FA ADD R0, PC ; off_1011C
__text:000030FC LDR.W R8, [R0] ; CKMessagesController *_messagesController;
__text:00003100 MOV R0, #(selRef_currentConversation - 0x310C)
Assembler code
.text:0000000080900A90
.text:0000000080900A90 # =============== S U B R O U T I N E =======================================
.text:0000000080900A90
.text:0000000080900A90
.text:0000000080900A90 sub_80900A90: # CODE XREF: start+360↑p
.text:0000000080900A90 # start+3A4↑p ...
.text:0000000080900A90 beq $17, locret_80900B2C
.text:0000000080900A94 subq $17, 4, $20
.text:0000000080900A98 ldq_u $28, 0($18)
.text:0000000080900A9C addq $17, $18, $27
.text:0000000080900AA0 andnot $16, 3, $19
.text:0000000080900AA4 bge $20, loc_80900B30
.text:0000000080900AA8 ldq_u $27, -1($27)
.text:0000000080900AAC and $16, 3, $16
.text:0000000080900AB0 ldl $17, 0($19)
.text:0000000080900AB4 addq $20, $16, $20
.text:0000000080900AB8 extql $28, $18, $28
.text:0000000080900ABC bgt $20, loc_80900AF0
.text:0000000080900AC0 extqh $27, $18, $27
.text:0000000080900AC4 addq $20, 4, $20
.text:0000000080900AC8 or $27, $28, $28
.text:0000000080900ACC insql $28, $16, $28
.text:0000000080900AD0 mskql $17, $16, $18
.text:0000000080900AD4 mskql $28, $20, $28
.text:0000000080900AD8 mskqh $17, $20, $17
.text:0000000080900ADC or $18, $28, $28
.text:0000000080900AE0 or $17, $28, $28
.text:0000000080900AE4 stl $28, 0($19)
.text:0000000080900AE8 addq $19, $20, $16
.text:0000000080900AEC ret $31, ($26), 4
.text:0000000080900AF0 # ---------------------------------------------------------------------------
.text:0000000080900AF0
.text:0000000080900AF0 loc_80900AF0: # CODE XREF: sub_80900A90+2C↑j
.text:0000000080900AF0 extqh $27, $18, $27
.text:0000000080900AF4 ldl $18, 4($19)
Assembler code
__text:00002CAC
__text:00002CAC ; =============== S U B R O U T I N E =======================================
__text:00002CAC
__text:00002CAC ; Attributes: bp-based frame
__text:00002CAC
__text:00002CAC sub_2CAC ; CODE XREF: sub_12FF8+18↓p
__text:00002CAC LDR R0, =off_52014
__text:00002CB0 PUSH {R4,R7,LR}
__text:00002CB4 MOV R1, #0 ; __c
__text:00002CB8 LDR R4, =dword_52DBC
__text:00002CBC LDR R3, =unk_52DC4
__text:00002CC0 ADD R7, SP, #4
__text:00002CC4 MOV R2, #0xE7 ; 'ç' ; __len
__text:00002CC8 LDR R0, [R0] ; unk_53620 ; __b
__text:00002CCC STR R3, [R4]
__text:00002CD0 BL _memset
__text:00002CD4 LDR R3, =off_52018
__text:00002CD8 MOV R1, #0
__text:00002CDC LDR R2, [R3] ; byte_53610
__text:00002CE0 MOV R3, R2
__text:00002CE4 STRB R1, [R2,#(byte_53611 - 0x53610)]
__text:00002CE8 STRB R1, [R3],#1
__text:00002CEC LDR R2, [R4]
__text:00002CF0 ADD R3, R3, #1
__text:00002CF4 ADD R0, R2, #0x84 ; '„'
__text:00002CF8 STRB R1, [R3],#1
__text:00002CFC STRB R1, [R3],#1
__text:00002D00 STRB R1, [R3],#1
__text:00002D04 STRB R1, [R3],#1
__text:00002D08 STRB R1, [R3]
__text:00002D0C MOV R3, R2
__text:00002D10
__text:00002D10 loc_2D10 ; CODE XREF: sub_2CAC+70↓j
__text:00002D10 STR R1, [R3,#8]
__text:00002D14 ADD R3, R3, #4
Assembler code
__text:00003B48 STR R3, [R4,#0xE8]
__text:00003B4C LDR R3, [R4,#0x38]
__text:00003B50 CMP R3, #0x27 ; switch 40 cases
__text:00003B54 LDRLS PC, [PC,R3,LSL#2] ; switch jump
__text:00003B58 B def_3B54 ; jumptable 00003B54 default case, cases 2-6,8,11,12,15,16,20-22,27,32-38
__text:00003B58 ; ---------------------------------------------------------------------------
__text:00003B5C jpt_3B54 DCD loc_3C0C ; jump table for switch statement
__text:00003B5C DCD loc_3C0C
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD loc_3C1C
__text:00003B5C DCD def_3B54
__text:00003B5C DCD loc_3C1C
__text:00003B5C DCD loc_3BFC
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD loc_3C24
__text:00003B5C DCD loc_3C2C
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD loc_3C14
__text:00003B5C DCD loc_3C2C
__text:00003B5C DCD loc_3C34
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD loc_3C14
__text:00003B5C DCD loc_3C2C
__text:00003B5C DCD loc_3C2C
__text:00003B5C DCD loc_3C2C
__text:00003B5C DCD def_3B54
__text:00003B5C DCD loc_3C3C
__text:00003B5C DCD loc_3C34
__text:00003B5C DCD loc_3C34
__text:00003B5C DCD loc_3C34
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD def_3B54
__text:00003B5C DCD loc_3BFC
Assembler code
__text:00015E90 BL _readdir
__text:00015E94 SUBS R1, R0, #0
__text:00015E98 BEQ loc_15F2C
__text:00015E9C MOV R3, #2
__text:00015EA0 LDRB R2, [R1,#7]
__text:00015EA4 ADD R0, SP, #0xA8+var_64
__text:00015EA8 STR R3, [SP,#0xA8+fctx.call_site]
__text:00015EAC ADD R1, R1, #8
__text:00015EB0 ADD R3, SP, #0xA8+var_5D
__text:00015EB4 BL __ZNSsC1EPKcmRKSaIcE ; std::string::string(char const*,ulong,std::allocator<char> const&)
__text:00015EB8 MOV R3, #1
__text:00015EBC STR R3, [SP,#0xA8+fctx.call_site]
__text:00015EC0 ADD R0, SP, #0xA8+var_64
__text:00015EC4 LDR R3, [SP,#0xA8+var_A4]
__text:00015EC8 BLX R3
__text:00015ECC CMP R0, #0
__text:00015ED0 BNE loc_15F1C
__text:00015ED4 MOV R3, #0xFFFFFFFF
__text:00015ED8 ADD R0, SP, #0xA8+var_64 ; this
__text:00015EDC STR R3, [SP,#0xA8+fctx.call_site]
__text:00015EE0 BL __ZNSsD2Ev ; std::string::~string()
__text:00015EE4 B loc_15E84
__text:00015EE8 ; ---------------------------------------------------------------------------
__text:00015EE8 ; cleanup() // owned by 15E64
__text:00015EE8 LDR R3, [SP,#0xA8+fctx.data]
__text:00015EEC STR R3, [SP,#0xA8+lpuexcpt]
__text:00015EF0 LDR R3, [SP,#0xA8+fctx.call_site]
__text:00015EF4 CMP R3, #1
__text:00015EF8 BEQ loc_15F0C
__text:00015EFC MOV R3, #0
__text:00015F00 ADD R0, SP, #0xA8+var_64 ; this
__text:00015F04 STR R3, [SP,#0xA8+fctx.call_site]
__text:00015F08 BL __ZNSsD2Ev ; std::string::~string()
__text:00015F0C
__text:00015F0C loc_15F0C ; CODE XREF: sub_15E1C+DC↑j
__text:00015F0C MOV R3, #0xFFFFFFFF
Assembler code
__text:00004424 BHI loc_440C
__text:00004428
__text:00004428 loc_4428 ; CODE XREF: sub_43CC+24↑j
__text:00004428 ; sub_43CC+3C↑j
__text:00004428 LDR R3, =___stderrp_ptr
__text:0000442C LDR R0, =aSynchronized ; "synchronized\n"
__text:00004430 MOV R1, #1 ; __size
__text:00004434 LDR R3, [R3] ; ___stderrp
__text:00004438 MOV R2, #0xD ; __nitems
__text:0000443C LDR R3, [R3] ; __stream
__text:00004440 BL _fwrite
__text:00004444 MOV R3, #0x12
__text:00004448
__text:00004448 loc_4448 ; CODE XREF: sub_43CC+34↑j
__text:00004448 ; sub_43CC+4C↑j
__text:00004448 STR R3, [R4,#0x38]
__text:0000444C LDR R3, [R4,#0xE4]
__text:00004450 STR R3, [R4,#0xE0]
__text:00004454 MOV R3, #9
__text:00004458 STR R3, [R4,#0xE4]
__text:0000445C LDR R3, [R4,#0xEC]
__text:00004460 STR R3, [R4,#0xE8]
__text:00004464 MOV R3, #0
__text:00004468 STR R3, [R4,#0xEC]
__text:0000446C POP {R4,R7,PC}
__text:0000446C ; End of function sub_43CC
__text:0000446C
__text:0000446C ; ---------------------------------------------------------------------------
__text:00004470 off_4470 DCD dword_52E70 ; DATA XREF: sub_43CC↑r
__text:00004474 off_4474 DCD ___stderrp_ptr ; DATA XREF: sub_43CC:loc_4428↑r
__text:00004478 ; void *const _ptr
__text:00004478 __ptr DCD aSynchronized ; DATA XREF: sub_43CC+60↑r
__text:00004478 ; "synchronized\n"
__text:0000447C
__text:0000447C ; =============== S U B R O U T I N E =======================================
__text:0000447C
__text:0000447C
__text:0000447C sub_447C ; DATA XREF: sub_4820+47C↓o
__text:0000447C ; __text:off_50A8↓o
__text:0000447C UXTB R0, R0
Assembler code
.text:50292274 B sub_5029254C
.text:50292274 ; ---------------------------------------------------------------------------
.text:50292278 off_50292278 DCD start ; DATA XREF: start+3C↑r
.text:5029227C ; ---------------------------------------------------------------------------
.text:5029227C MOV R1, R0
.text:50292280 LDR R0, =start
.text:50292284 B sub_50292558
.text:50292284 ; ---------------------------------------------------------------------------
.text:50292288 off_50292288 DCD start ; DATA XREF: start+4C↑r
.text:5029228C ; ---------------------------------------------------------------------------
.text:5029228C LDR R0, =start
.text:50292290 B sub_50292564
.text:50292290 ; ---------------------------------------------------------------------------
.text:50292294 off_50292294 DCD start ; DATA XREF: start+58↑r
.text:50292298 ; ---------------------------------------------------------------------------
.text:50292298 LDR R0, =start
.text:5029229C B sub_50292570
.text:5029229C ; ---------------------------------------------------------------------------
.text:502922A0 off_502922A0 DCD start ; DATA XREF: start+64↑r
.text:502922A4 ; ---------------------------------------------------------------------------
.text:502922A4 LDR R0, =start
.text:502922A8 B sub_5029257C
.text:502922A8 ; ---------------------------------------------------------------------------
.text:502922AC off_502922AC DCD start ; DATA XREF: start+70↑r
.text:502922B0 ; ---------------------------------------------------------------------------
.text:502922B0 LDR R0, =start
.text:502922B4 B sub_50292588
.text:502922B4 ; ---------------------------------------------------------------------------
.text:502922B8 off_502922B8 DCD start ; DATA XREF: start+7C↑r
.text:502922BC ; ---------------------------------------------------------------------------
.text:502922BC MOV R1, R0
.text:502922C0 LDR R0, =start
.text:502922C4 B sub_50292594
.text:502922C4 ; ---------------------------------------------------------------------------
.text:502922C8 off_502922C8 DCD start ; DATA XREF: start+8C↑r
Assembler code
C$$code:00000024 ADD R0, R0, #1
C$$code:00000028 CMP R0, #0xC8 ; 'È'
C$$code:0000002C BLT loc_20
C$$code:00000030 ADD R1, R1, #1
C$$code:00000034 CMP R1, #0x12C
C$$code:00000038 BLT loc_10
C$$code:0000003C MOV R3, #1
C$$code:00000040
C$$code:00000040 loc_40 ; CODE XREF: x$litpool$0+90↓j
C$$code:00000040 MOV R1, #0
C$$code:00000044
C$$code:00000044 loc_44 ; CODE XREF: x$litpool$0+84↓j
C$$code:00000044 ADD R12, R1, R1,LSL#3
C$$code:00000048 ADD R12, R12, R1,LSL#4
C$$code:0000004C ADD R12, R2, R12,LSL#5
C$$code:00000050 MOV R0, #0
C$$code:00000054
C$$code:00000054 loc_54 ; CODE XREF: x$litpool$0+78↓j
C$$code:00000054 LDR LR, [R12,R0,LSL#2]
C$$code:00000058 MUL LR, R3, LR
C$$code:0000005C STR LR, [R12,R0,LSL#2]
C$$code:00000060 ADD LR, R12, R0,LSL#2
C$$code:00000064 LDR LR, [LR,#0x10]
C$$code:00000068 MUL LR, R3, LR
C$$code:0000006C STR LR, [R12,R0,LSL#2]
C$$code:00000070 ADD R0, R0, #5
C$$code:00000074 CMP R0, #0xC3 ; 'Ã'
C$$code:00000078 BLT loc_54
C$$code:0000007C ADD R1, R1, #1
C$$code:00000080 CMP R1, #0x12C
C$$code:00000084 BLT loc_44
C$$code:00000088 ADD R3, R3, #1
C$$code:0000008C CMP R3, #0x32 ; '2'
C$$code:00000090 BLT loc_40
C$$code:00000094 MOV R0, #0
Assembler code
.text:8012235E MOVS R4, R5
.text:80122360 ADDS R4, #0x4C ; 'L'
.text:80122362
.text:80122362 loc_80122362 ; CODE XREF: sub_8012234E+C4↓j
.text:80122362 LDR R4, [R4,#4]
.text:80122364 CMP R4, #0
.text:80122366 BNE loc_8012236C
.text:80122368 LDR R4, [R5,#0x3C]
.text:8012236A B loc_801223FA
.text:8012236C ; ---------------------------------------------------------------------------
.text:8012236C
.text:8012236C loc_8012236C ; CODE XREF: sub_8012234E+18↑j
.text:8012236C LDR R0, [R5,#0x3C]
.text:8012236E CMP R0, R4
.text:80122370 BLS loc_8012237C
.text:80122372 LDR R0, [R4,#4]
.text:80122374 CMP R0, #0
.text:80122376 BEQ loc_8012238E
.text:80122378 CMP R0, R4
.text:8012237A BHI loc_8012238E
.text:8012237C
.text:8012237C loc_8012237C ; CODE XREF: sub_8012234E+22↑j
.text:8012237C LDR R0, [SP,#0x28+var_24]
.text:8012237E BLX arm_euser_eka2_1417
.text:80122382 MOVS R2, R4
.text:80122384 MOVS R1, #4
.text:80122386 LDR R0, [SP,#0x28+var_18]
.text:80122388 LDR R7, [SP,#0x28+var_1C]
.text:8012238A MOVS R3, #0
.text:8012238C B loc_801223F2
.text:8012238E ; ---------------------------------------------------------------------------
.text:8012238E
.text:8012238E loc_8012238E ; CODE XREF: sub_8012234E+28↑j
.text:8012238E ; sub_8012234E+2C↑j
.text:8012238E LDR R7, [R4]
Assembler code
.text:00000078 MOVS R3, R0
.text:0000007C BNE loc_58
.text:00000080 MOV R0, #0x200
.text:00000084 ADD R0, SP, R0
.text:00000088 BL OutputDebugStringW
.text:0000008C CMP R6, #0
.text:00000090 MOV R0, R6
.text:00000094 MOVLE R0, #0
.text:00000098 ADD SP, SP, #0x600
.text:0000009C LDMFD SP, {R4-R6,SP,PC}
.text:0000009C ; ---------------------------------------------------------------------------
.text:000000A0 off_A0 DCD __imp_vsprintf ; DATA XREF: DbgPrint:$M4755↑r
.text:000000A0 ; End of function DbgPrint
.text:000000A0
.text:000000A0 ; .text ends
.text:000000A0
.pdata:000000A4 ; ===========================================================================
.pdata:000000A4
.pdata:000000A4 ; Segment type: Pure data
.pdata:000000A4 AREA .pdata, DATA, READONLY
.pdata:000000A4 ; ORG 0xA4
.pdata:000000A4 ; COMDAT (pick associative to section at 10)
.pdata:000000A4 $T4757 DCD DbgPrint ; Function start
.pdata:000000A8 DCD 0x40002504 ; Function end: A4, prolog end: 20, 32-bit: 1, has EH: 0
.pdata:000000A8 ; .pdata ends
.pdata:000000A8
UNDEF:000000B0 ; ===========================================================================
UNDEF:000000B0
UNDEF:000000B0 ; Segment type: Externs
UNDEF:000000B0 IMPORT OutputDebugStringW
UNDEF:000000B0 ; CODE XREF: DbgPrint+78↑p
UNDEF:000000B4 IMPORT __imp_vsprintf ; DATA XREF: DbgPrint:$M4755↑o
UNDEF:000000B4 ; DbgPrint:off_A0↑o
UNDEF:000000B4
UNDEF:000000B4 END
Assembler code
.text:1001577C
.text:1001577C ; =============== S U B R O U T I N E =======================================
.text:1001577C
.text:1001577C
.text:1001577C ; BOOL __stdcall DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
.text:1001577C EXPORT DllEntryPoint
.text:1001577C DllEntryPoint ; DATA XREF: .pdata:1001BB70↓o
.text:1001577C PUSH {R4-R8,LR}
.text:10015780 MOV R7, R2
.text:10015784 MOV R6, R1
.text:10015788 MOV R8, R0
.text:1001578C LDR R5, =dword_1001AD20
.text:10015790 CMP R6, #1
.text:10015794 BNE loc_100157BC
.text:10015798 LDR R3, [R5]
.text:1001579C CMP R3, #0
.text:100157A0 BEQ loc_100157B8
.text:100157A4 MOV R1, #1
.text:100157A8 MOV LR, PC
.text:100157AC BX R3
.text:100157B0 MOVS R4, R0
.text:100157B4 BEQ loc_10015804
.text:100157B8
.text:100157B8 loc_100157B8 ; CODE XREF: DllEntryPoint+24↑j
.text:100157B8 BL sub_100155D8
.text:100157BC
.text:100157BC loc_100157BC ; CODE XREF: DllEntryPoint+18↑j
.text:100157BC MOV R2, R7
.text:100157C0 MOV R1, R6
.text:100157C4 MOV R0, R8
.text:100157C8 BL sub_10003C18
.text:100157CC MOV R4, R0
.text:100157D0 CMP R6, #0
.text:100157D4 BNE loc_10015804
.text:100157D8 BL sub_10015760
Assembler code
Assembler code
Assembler code
Assembler code
Assembler code
Assembler code
Assembler code
Assembler code
Input containing only whitespaces is equal to an empty input.
Do not forget that you can also use the clipboard.
__text:00002274
__text:00002274 ; =============== S U B R O U T I N E =======================================
__text:00002274
__text:00002274 ; Attributes: noreturn bp-based frame
__text:00002274
__text:00002274 sub_2274 ; CODE XREF: start+14↑p
__text:00002274
__text:00002274 var_10 = -0x10
__text:00002274
__text:00002274 PUSH {R4-R7,LR}
__text:00002278 ADD R7, SP, #0xC
__text:0000227C SUB SP, SP, #4
__text:00002280 MOV R6, R0
__text:00002284 MOV R5, R1
__text:00002288 MOV R4, R2
__text:0000228C LDR R3, =(_NXArgc - 0x2298)
__text:00002290 STR R0, [PC,R3] ; _NXArgc
__text:00002294 LDR R3, =(_NXArgv - 0x22A0)
__text:00002298 STR R1, [PC,R3] ; _NXArgv
__text:0000229C LDR R3, =(_environ - 0x22A8)
__text:000022A0 STR R2, [PC,R3] ; _environ
__text:000022A4 LDR R3, =(_mach_init_routine_ptr - 0x22B0)
__text:000022A8 LDR R3, [PC,R3] ; _mach_init_routine
__text:000022AC LDR R3, [R3]
__text:000022B0 CMP R3, #0
__text:000022B4 BLXNE R3
__text:000022B8 LDR R3, =(__cthread_init_routine_ptr - 0x22C4)
__text:000022BC LDR R3, [PC,R3] ; __cthread_init_routine
__text:000022C0 LDR R3, [R3]
__text:000022C4 CMP R3, #0
__text:000022C8 BLXNE R3
__text:000022CC BL ___keymgr_dwarf2_register_sections
__text:000022D0 BL sub_23C4
__text:000022D4 LDR R0, =(aDyldModTermFun - 0x22E0) ; "__dyld_mod_term_funcs"
__text:000022D8 ADD R0, PC, R0 ; "__dyld_mod_term_funcs"
.text:0000003B
.text:0000003B ; =============== S U B R O U T I N E =======================================
.text:0000003B
.text:0000003B
.text:0000003B ; public qsort
.text:0000003B qsort: ; CODE XREF: sub_41+1DE↓p
.text:0000003B ldi r26, 0xA
.text:0000003C ldi r27, 0
.text:0000003D ldi r30, (sub_41 & 0xFF)
.text:0000003E ldi r31, (sub_41 >> 8)
.text:0000003F jmp __prologue_saves__
.text:0000003F ; End of function qsort
.text:0000003F
.text:00000041
.text:00000041 ; =============== S U B R O U T I N E =======================================
.text:00000041
.text:00000041
.text:00000041 sub_41: ; DATA XREF: qsort+2↑o
.text:00000041 ; qsort+3↑o
.text:00000041 movw r4, r24
.text:00000042 movw r8, r22
.text:00000043 movw r6, r20
.text:00000044 movw r2, r18
.text:00000045 std Y+5, r20
.text:00000046 std Y+6, r7
.text:00000047 clr r18
.text:00000048 clr r19
.text:00000049 sub r18, r20
.text:0000004A sbc r19, r21
.text:0000004B std Y+8, r19
.text:0000004C std Y+7, r18
.text:0000004D
.text:0000004D loc_4D: ; CODE XREF: sub_41+1EB↓j
.text:0000004D ldi r19, 7
.text:0000004E cp r8, r19
code:0000019C .byte 0
code:0000019D .byte 0xFF ; ÿ
code:0000019E .byte 0xF5 ; õ
code:0000019F .byte 0xFF ; ÿ
code:000001A0 ; ---------------------------------------------------------------------------
code:000001A0 mov RESERVED00FF, R0 ; RESERVED
code:000001A2 mov RESERVED00FF, R1 ; RESERVED
code:000001A4 mov RESERVED00FF, R2 ; RESERVED
code:000001A6 mov RESERVED00FF, R3 ; RESERVED
code:000001A8 mov RESERVED00FF, R4 ; RESERVED
code:000001AA mov RESERVED00FF, R5 ; RESERVED
code:000001AC mov RESERVED00FF, R6 ; RESERVED
code:000001AE mov RESERVED00FF, R7 ; RESERVED
code:000001B0 mov RESERVED00FF, RAM_0 ; RESERVED
code:000001B3 mov RESERVED00FF, RESERVED00FF ; RESERVED
code:000001B6 mov RESERVED00FF, @R0 ; RESERVED
code:000001B8 mov RESERVED00FF, @R1 ; RESERVED
code:000001BA mov RESERVED00FF, #0 ; RESERVED
code:000001BD mov RESERVED00FF, #0xFF ; RESERVED
code:000001C0 mov @R0, #0
code:000001C2 mov @R0, #0xFF
code:000001C4 mov @R0, RAM_0
code:000001C6 mov @R0, RESERVED00FF ; RESERVED
code:000001C8 mov @R0, A
code:000001C9 mov @R1, #0
code:000001CB mov @R1, #0xFF
code:000001CD mov @R1, RAM_0
code:000001CF mov @R1, RESERVED00FF ; RESERVED
code:000001D1 mov @R1, A
code:000001D2 mov C, RAM_20.0
code:000001D4 mov C, P5.7 ; Port 5
code:000001D6 mov RAM_20.0, C
code:000001D8 mov P5.7, C ; Port 5
code:000001DA mov DPTR, #0xFF
code:000001DD mov DPTR, #0xFF00
.text:0000107E VLDR D0, [SP,#0x5E8+var_450]
.text:00001082 VMOV R2, R3, D0
.text:00001086 VLDR D0, [SP,#0x5E8+var_448]
.text:0000108A VMOV R0, R1, D0
.text:0000108E BL __aeabi_ddiv
.text:00001092 VMOV D0, R0, R1
.text:00001096 VSTR D0, [SP,#0x5E8+var_440]
.text:0000109A VLDR D0, [SP,#0x5E8+var_440]
.text:0000109E VMOV R0, R1, D0
.text:000010A2 BL __aeabi_d2f
.text:000010A6 LDR R1, =Usart1_out_DATA
.text:000010A8 STR R0, [R1,#0x7C] ; `vtable for'__cxxabiv1::__si_class_type_info
.text:000010AA LDR.W R0, [SP,#0x5E8+var_18]
.text:000010AE ADDW R0, R0, #0xCC8
.text:000010B2 ADD.W R0, R0, #0x400
.text:000010B6 VLDR D0, [R0,#0x300]
.text:000010BA VSTR D0, [SP,#0x5E8+var_450]
.text:000010BE VLDR D0, [SP,#0x5E8+var_450]
.text:000010C2 BL __hardfp_sqrt
.text:000010C6 VSTR D0, [SP,#0x5E8+var_448]
.text:000010CA LDR R0, =glv
.text:000010CC VLDR D0, [R0,#0x48]
.text:000010D0 VSTR D0, [SP,#0x5E8+var_450]
.text:000010D4 VLDR D0, [SP,#0x5E8+var_450]
.text:000010D8 VMOV R2, R3, D0
.text:000010DC VLDR D0, [SP,#0x5E8+var_448]
.text:000010E0 VMOV R0, R1, D0
.text:000010E4 BL __aeabi_ddiv
.text:000010E8 VMOV D0, R0, R1
.text:000010EC VSTR D0, [SP,#0x5E8+var_440]
.text:000010F0 VLDR D0, [SP,#0x5E8+var_440]
.text:000010F4 VMOV R0, R1, D0
.text:000010F8 BL __aeabi_d2f
.text:000010FC LDR R1, =Usart1_out_DATA
.text:000010FE STR.W R0, [R1,#0x80]
ROM:4B66 .byte 0xCE ; Î
ROM:4B67 .byte 0x15
ROM:4B68 .byte 0xFE ; þ
ROM:4B69 .byte 0x2E ; .
ROM:4B6A ; ---------------------------------------------------------------------------
ROM:4B6A bal r6, sub_E8BA
ROM:4B6E movw $0xEE36, r7
ROM:4B72 movw $0x25A8, r8
ROM:4B76 movw $0xEE4F, r9
ROM:4B7A movw $0xEE4A, r10
ROM:4B7E movw $0xEE4C, r11
ROM:4B82 movw $0xEE4D, r12
ROM:4B86 movw $0xEE4E, r13
ROM:4B8A loadb 0x00(r2), r0
ROM:4B8C cmpb $0xFF98, r0
ROM:4B90 bne loc_4B98
ROM:4B92 loadb byte_EE49, r0
ROM:4B96 storb r0, 0x00(r2)
ROM:4B98
ROM:4B98 loc_4B98: ; CODE XREF: ROM:4B90↑j
ROM:4B98 loadb 0x00(r2), r6
ROM:4B9A bal r0, sub_E68A
ROM:4B9E addb $-0x10, r0
ROM:4BA0 mulw $0x0B, r3
ROM:4BA2 loadw 0x0002(r2), r4
ROM:4BA4 loadb 0x04(r3), r9
ROM:4BA6 mulw $0xF2, r7
ROM:4BA8 addb $0x07, r4
ROM:4BAA loadb 0x09(r3), r1
ROM:4BAC mulw $0x0F, r8
ROM:4BAE orw $0x09, r4
ROM:4BB0 loadb 0x0B(r3), r1
ROM:4BB2 mulw $0x04, r10
ROM:4BB4 adduw r5, r12
ROM:4BB6 loadb 0x0D(r3), r1
ROM:00005920
ROM:00005920 ; =============== S U B R O U T I N E =======================================
ROM:00005920
ROM:00005920
ROM:00005920 sub_5920: ; CODE XREF: ROM:00005A1A↓P
ROM:00005920 ; ROM:00005ADC↓P
ROM:00005920 mov r4, r8
ROM:00005922 cmpb rl4, #0
ROM:00005924 jmpr cc_NZ, loc_5932
ROM:00005926 mov r5, #4
ROM:00005928 or dword_18+4, ZEROS
ROM:0000592C or dword_18+6, r5
ROM:00005930 jmpr cc_UC, loc_593E
ROM:00005932 ; ---------------------------------------------------------------------------
ROM:00005932
ROM:00005932 loc_5932: ; CODE XREF: sub_5920+4↑j
ROM:00005932 mov r5, #0FFFBh
ROM:00005936 and dword_18+4, ONES
ROM:0000593A and dword_18+6, r5
ROM:0000593E
ROM:0000593E loc_593E: ; CODE XREF: sub_5920+10↑j
ROM:0000593E mov r4, r9
ROM:00005940 cmpb rl4, #0
ROM:00005942 jmpr cc_NZ, loc_5950
ROM:00005944 mov r5, #8
ROM:00005946 or dword_18+4, ZEROS
ROM:0000594A or dword_18+6, r5
ROM:0000594E jmpr cc_UC, loc_595C
ROM:00005950 ; ---------------------------------------------------------------------------
ROM:00005950
ROM:00005950 loc_5950: ; CODE XREF: sub_5920+22↑j
ROM:00005950 mov r5, #0FFF7h
ROM:00005954 and dword_18+4, ONES
ROM:00005958 and dword_18+6, r5
ROM:0000595C
ROM:0000595C loc_595C: ; CODE XREF: sub_5920+2E↑j
ROM:0000595C mov r4, dword_18+4
__objc_const:000106C0 __objc2_meth <sel__clearFailureBadge, aV804, \ ; -[SMSApplication _clearFailureBadge] ...
__objc_const:000106C0 __SMSApplication__clearFailureBadge_+1>
__objc_const:000106CC __objc2_meth <sel__mediaDidFinishSaving, aV804, \ ; -[SMSApplication _mediaDidFinishSaving] ...
__objc_const:000106CC __SMSApplication__mediaDidFinishSaving_+1>
__objc_const:000106D8 __objc2_meth <sel__mediaDidStartSaving, aV804, \ ; -[SMSApplication _mediaDidStartSaving] ...
__objc_const:000106D8 __SMSApplication__mediaDidStartSaving_+1>
__objc_const:000106E4 _OBJC_INSTANCE_VARIABLES_SMSApplication __objc2_ivar_list <0x14, 0xF>
__objc_const:000106E4 ; DATA XREF: __objc_const:SMSApplication_$classData↑o
__objc_const:000106EC __objc2_ivar <_OBJC_IVAR_$_SMSApplication._waitToSendFinishLaunching, \ ; char _waitToSendFinishLaunching;
__objc_const:000106EC aWaittosendfini, aC, 0, 1>
__objc_const:00010700 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._isLocked, aIslocked_0, aC, \ ; char _isLocked;
__objc_const:00010700 0, 1>
__objc_const:00010714 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._isSuspended, aIssuspended, \ ; char _isSuspended;
__objc_const:00010714 aC, 0, 1>
__objc_const:00010728 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._hasEmail, aHasemail, aC, 0,\ ; char _hasEmail;
__objc_const:00010728 1>
__objc_const:0001073C __objc2_ivar <_OBJC_IVAR_$_SMSApplication._window, aWindow_0, \ ; UIWindow *_window;
__objc_const:0001073C aUiwindow, 2, 4>
__objc_const:00010750 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._messagesController, \ ; CKMessagesController *_messagesController;
__objc_const:00010750 aMessagescontro, aCkmessagescont_7, 2, 4>
__objc_const:00010764 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._smsService, aSmsservice, \ ; CKService *_smsService;
__objc_const:00010764 aCkservice, 2, 4>
__objc_const:00010778 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._madridService, \ ; CKService *_madridService;
__objc_const:00010778 aMadridservice, aCkservice, 2, 4>
__objc_const:0001078C __objc2_ivar <_OBJC_IVAR_$_SMSApplication._delaySuspendCount, \ ; int _delaySuspendCount;
__objc_const:0001078C aDelaysuspendco, aI, 2, 4>
__objc_const:000107A0 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._backgroundTask, \ ; unsigned int _backgroundTask;
__objc_const:000107A0 aBackgroundtask, aI_0, 2, 4>
__objc_const:000107B4 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._madridRegistrationController,\ ; CNFRegWizardController *_madridRegistrationController;
__objc_const:000107B4 aMadridregistra_2, aCnfregwizardco, 2, 4>
__objc_const:000107C8 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._defaultPng, aDefaultpng_0, \ ; NSString *_defaultPng;
__objc_const:000107C8 aNsstring, 2, 4>
__objc_const:000107DC __objc2_ivar <_OBJC_IVAR_$_SMSApplication._suspendTimeStatusBarStyle, \ ; int _suspendTimeStatusBarStyle;
__objc_const:000107DC aSuspendtimesta, aI, 2, 4>
__objc_const:000107F0 __objc2_ivar <_OBJC_IVAR_$_SMSApplication._deferredLoadURL, \ ; NSURL *_deferredLoadURL;
__objc_const:000107F0 aDeferredloadur_0, aNsurl, 2, 4>
conv.i8
mul.ovf
stloc.0
ldarg.0
ldfld class [mscorlib]System.IO.FileStream Microsoft.VisualBasic.CompilerServices.VB6File::m_file
ldloc.1
ldloc.0
callvirt instance void [mscorlib]System.IO.FileStream::Lock(int64, int64)
ret
}
.method public hidebysig virtual instance void Unlock(int64 lStart, int64 lEnd)
{
.maxstack 3
.locals init (int64 V0,
int64 V1)
ldarg.1
ldarg.2
ble.s loc_439
ldstr aArgumentInvali // "Argument_InvalidValue1"
ldstr aStart // "Start"
call string Microsoft.VisualBasic.CompilerServices.Utils::GetResourceString(string ResourceKey, string Parm1)
newobj instance void [mscorlib]System.ArgumentException::.ctor(string)
throw
loc_439: // CODE XREF: Microsoft.VisualBasic.CompilerServices.VB6RandomFile__Unlock+2↑j
ldarg.1
ldc.i8 1
sub.ovf
ldarg.0
ldfld int32 Microsoft.VisualBasic.CompilerServices.VB6File::m_lRecordLen
conv.i8
mul.ovf
stloc.1
ldarg.2
In the text version of IDA, you can use the following keys:
Enter starts a new line
Ctrl-Enter finishes the input
Esc cancels the input
F1 gives some help
Shift-<arrow> Select
Ctrl-L Search Again Shift-Ins Paste
Ctrl-O Indent Mode Shift-Del Cut
Ctrl-T Delete Word Ctrl-Ins Copy
Ctrl-U Undo Ctrl-Del Clear
Ctrl-Y Delete Line Ctrl-K B Start Select
Ctrl-Left Word Left Ctrl-K H Hide Select
Ctrl-Right Word Right
Ctrl-PgUp Text Start Ctrl-Q A Replace
Ctrl-PgDn Text End Ctrl-Q F Search
Ctrl-Q H Delete Line Start
Ctrl-Q Y Delete Line End
Assembler code
.text:00000164 beq _L6:8
.text:00000166 mov.w @(var_6:16,r6), r0
.text:0000016A mov.w @(var_4:16,r6), r1
.text:0000016E mov.w r3, @(var_2:16,r6)
.text:00000172 jsr ___negsf2:16
.text:00000176 mov.w r0, @(var_6:16,r6)
.text:0000017A mov.w r1, @(var_4:16,r6)
.text:0000017E mov.w @(var_2:16,r6), r3
.text:00000182
.text:00000182 _L6: ; CODE XREF: ___adjust+64↑j
.text:00000182 mov.w r3, r3
.text:00000184 bne _L7:8
.text:00000186 mov.w @(var_6:16,r6), r0
.text:0000018A mov.w @(var_4:16,r6), r1
.text:0000018E bra _L11:8
.text:00000190 ; ---------------------------------------------------------------------------
.text:00000190
.text:00000190 _L7: ; CODE XREF: ___adjust+84↑j
.text:00000190 mov.w r3, r3
.text:00000192 bge _L8:8
.text:00000194 mov.w r3, r0
.text:00000196 not.b r0l
.text:00000198 not.b r0h
.text:0000019A adds #1, r0
.text:0000019C jsr ___exp10:16
.text:000001A0 push.w r1
.text:000001A2 push.w r0
.text:000001A4 mov.w @(var_6:16,r6), r0
.text:000001A8 mov.w @(var_4:16,r6), r1
.text:000001AC jsr ___divsf3:16
.text:000001B0 bra _L12:8
.text:000001B2 ; ---------------------------------------------------------------------------
.text:000001B2
.text:000001B2 _L8: ; CODE XREF: ___adjust+92↑j
.text:000001B2 mov.w r3, r0
Assembler code
.text:00000114
.text:00000114 ; =============== S U B R O U T I N E =======================================
.text:00000114
.text:00000114 ; Attributes: bp-based frame
.text:00000114
.text:00000114 .globl main
.text:00000114 .type main, @function
.text:00000114 main:
.text:00000114
.text:00000114 var_4 = -4
.text:00000114
.text:00000114 st rp, @-r15
.text:00000116 enter #8
.text:00000118 ldi:32 #0x170, r4
.text:0000011E ldi:32 #printf, r1
.text:00000124 call @r1
.text:00000126 ldi:8 #1, r4
.text:00000128 ldi:8 #2, r5
.text:0000012A ldi:8 #3, r6
.text:0000012C ldi:32 #plok1, r1
.text:00000132 call @r1
.text:00000134 mov r4, r2
.text:00000136 ldi:8 #var_4, r1
.text:00000138 extsb r1
.text:0000013A addn r14, r1
.text:0000013C st r2, @r1
.text:0000013E ldi:8 #var_4, r1
.text:00000140 extsb r1
.text:00000142 addn r14, r1
.text:00000144 ld @r1, r4
.text:00000146 ldi:32 #plok2, r1
.text:0000014C call @r1
.text:0000014E ldi:8 #0x61, r4 ; 'a'
.text:00000150 ldi:32 #plok3, r1
.text:00000156 call @r1
Assembler code
CODE:000065D0 # Source file: AlarmReceiver.java
CODE:000065D0 public void com.android.alarmclock.AlarmReceiver.onReceive(
CODE:000065D0 android.content.Context p0,
CODE:000065D0 android.content.Intent p1)
CODE:000065D0 this = v11
CODE:000065D0 p0 = v12
CODE:000065D0 p1 = v13
CODE:000065D0 const/4 v2, -1
CODE:000065D2 const/4 v8, 0
CODE:000065D4 const-class v10, <t: AlarmAlert>
CODE:000065D8 const-string v9, aIntentExtraAla # "intent.extra.alarm"
CODE:000065DC .prologue_end
CODE:000065DC .line 45
CODE:000065DC const-string v0, aAlarmKilled # "alarm_killed"
CODE:000065E0 +invoke-virtual-quick {p1}, [0x12]
CODE:000065E6 move-result-object v1
CODE:000065E8 +execute-inline {v0, v1}, [3]
CODE:000065EE move-result v0
CODE:000065F0 if-eqz v0, loc_6618
CODE:000065F4 const-string v0, aIntentExtraAla # "intent.extra.alarm"
CODE:000065F8 +invoke-virtual-quick {p1, v9}, [0x32]
CODE:000065FE move-result-object v0
CODE:00006600 check-cast v0, <t: Alarm>
CODE:00006604 const-string v1, aAlarmKilledTim # "alarm_killed_timeout"
CODE:00006608 +invoke-virtual-quick {p1, v1, v2}, [0x2B]
CODE:0000660E move-result v1
CODE:00006610 invoke-direct {this, p0, v0, v1}, <void AlarmReceiver.updateNotification(ref, ref, int) AlarmReceiver_updateNotification@VLLI>
CODE:00006616
CODE:00006616 locret: # CODE XREF: AlarmReceiver_onReceive@VLL+6A↓j
CODE:00006616 # AlarmReceiver_onReceive@VLL+B4↓j ...
CODE:00006616 .line 154
CODE:00006616 return-void
CODE:00006618 # ---------------------------------------------------------------------------
CODE:00006618
CODE:00006618 loc_6618: # CODE XREF: AlarmReceiver_onReceive@VLL+20↑j
CODE:00006618 .line 51
CODE:00006618 const-string v0, aCancelSnooze # "cancel_snooze"
Assembler code
ROM:E520
ROM:E520 ; =============== S U B R O U T I N E =======================================
ROM:E520
ROM:E520
ROM:E520 sub_E520: ; CODE XREF: JSB0__0+9↓j
ROM:E520 ; sub_E581↓p ...
ROM:E520 STI #0x70, 0x0018 ; 'p' ; Bank switch register 0000-1FFF (R/W)
ROM:E523 STI #0x71, 0x0019 ; 'q' ; Bank switch register 2000-3FFF (R/W)
ROM:E526 STI #0x72, 0x001A ; 'r' ; Bank switch register 4000-5FFF (R/W)
ROM:E529 STI #0x73, 0x001B ; 's' ; Bank switch register 6000-7FFF (R/W)
ROM:E52C RTS
ROM:E52C ; End of function sub_E520
ROM:E52C
ROM:E52D
ROM:E52D ; =============== S U B R O U T I N E =======================================
ROM:E52D
ROM:E52D
ROM:E52D sub_E52D: ; CODE XREF: sub_E5B8↓p
ROM:E52D STI #0x74, 0x0018 ; 't' ; Bank switch register 0000-1FFF (R/W)
ROM:E530 STI #0x75, 0x0019 ; 'u' ; Bank switch register 2000-3FFF (R/W)
ROM:E533 STI #0x76, 0x001A ; 'v' ; Bank switch register 4000-5FFF (R/W)
ROM:E536 RTS
ROM:E536 ; End of function sub_E52D
ROM:E536
ROM:E537
ROM:E537 ; =============== S U B R O U T I N E =======================================
ROM:E537
ROM:E537
ROM:E537 sub_E537: ; CODE XREF: sub_E5EF↓p
ROM:E537 STI #0x78, 0x0018 ; 'x' ; Bank switch register 0000-1FFF (R/W)
ROM:E53A STI #0x79, 0x0019 ; 'y' ; Bank switch register 2000-3FFF (R/W)
ROM:E53D STI #0x7A, 0x001A ; 'z' ; Bank switch register 4000-5FFF (R/W)
ROM:E540 STI #0x7B, 0x001B ; '{' ; Bank switch register 6000-7FFF (R/W)
ROM:E543 RTS
ROM:E543 ; End of function sub_E537
ROM:E543
Assembler code
code_libc:00C00D9C ; ===========================================================================
code_libc:00C00D9C
code_libc:00C00D9C ; Segment type: Pure code
code_libc:00C00D9C code_libc section CODE word public
code_libc:00C00D9C proccode_libc proc
code_libc:00C00D9C ; assume dpp0: 1 (page 0x4000)
code_libc:00C00D9C ; assume dpp1: 1 (page 0x4000)
code_libc:00C00D9C ; assume dpp2: 2 (page 0x8000)
code_libc:00C00D9C ; assume dpp3: 3 (page 0xC000)
code_libc:00C00D9C
code_libc:00C00D9C ; =============== S U B R O U T I N E =======================================
code_libc:00C00D9C
code_libc:00C00D9C
code_libc:00C00D9C _$cocofun_7: ; CODE XREF: _$cocofun_2+A↓J
code_libc:00C00D9C ; _$cocofun_6_0+6↓J
code_libc:00C00D9C mov r4, r0
code_libc:00C00D9E calls 0C0h, __emitchar
code_libc:00C00DA2 mov r11, #0
code_libc:00C00DA4 cmp r11, r8
code_libc:00C00DA6 subc r8, #0
code_libc:00C00DA8 rets
code_libc:00C00DA8 ; End of function _$cocofun_7
code_libc:00C00DA8
code_libc:00C00DA8 proccode_libc endp
code_libc:00C00DA8 code_libc ends
code_libc:00C00DA8
code_libc:00C00DAA ; ===========================================================================
code_libc:00C00DAA
code_libc:00C00DAA ; Segment type: Pure code
code_libc:00C00DAA code_libc section CODE word public
code_libc:00C00DAA proccode_libc proc
code_libc:00C00DAA ; assume dpp0: 1 (page 0x4000)
code_libc:00C00DAA ; assume dpp1: 1 (page 0x4000)
code_libc:00C00DAA ; assume dpp2: 2 (page 0x8000)
code_libc:00C00DAA ; assume dpp3: 3 (page 0xC000)
code_libc:00C00DAA
code_libc:00C00DAA ; =============== S U B R O U T I N E =======================================
code_libc:00C00DAA
code_libc:00C00DAA
code_libc:00C00DAA _$cocofun_2: ; CODE XREF: code_libc:00C0050C↑P
code_libc:00C00DAA ; code_libc:00C0055C↑P
code_libc:00C00DAA calls 0C0h, _$cocofun_6_0
Assembler code
ROM:00000100
ROM:00000100 ; =============== S U B R O U T I N E =======================================
ROM:00000100
ROM:00000100
ROM:00000100 global start
ROM:00000100 start: ; CODE XREF: ROM:00000000↑j
ROM:00000100 ; start+3↓j ...
ROM:00000100 clr a
ROM:00000101 move r5,a
ROM:00000102 tst a
ROM:00000103 jne <start
ROM:00000104 move #$14,r5
ROM:00000105 movec #$13F,m6
ROM:00000107 movec #$13F,m4
ROM:00000109 move r2,r1
ROM:0000010A move #$7000,r6
ROM:0000010C move #$7400,r4
ROM:0000010E move (r1)+n1
ROM:0000010F move x:(r1)+,x0 y:(r6)+,y0
ROM:00000110 do #$140,ROM_115
ROM:00000112 mpyr y0,x0,a x:(r1)+,x0 y:(r6)+,y0
ROM:00000113 nop
ROM:00000114 move a,x:(r4)+
ROM:00000115
ROM:00000115 ROM_115: ; CODE XREF: start+10↑j
ROM:00000115 movec #$FFFF,m4
ROM:00000117 movec #$FFFF,m6
ROM:00000119 move #$72B0,r3
ROM:0000011B move #$72A8,r4
ROM:0000011D move #$72A0,r6
ROM:0000011F move #$7156,r7
ROM:00000121 do #8,ROM_129
ROM:00000123 jsr ROM_12A
ROM:00000125 nop
ROM:00000126 nop
The IDA disassembler can disassemble a portable executable (PE) file that contains Microsoft intermediate language (MSIL) code. The Common Language Infrastructure (CLI) is the ECMA standard that describes the core of the .NET Framework world.
Assembler code
.method private hidebysig instance void UpdateDocumentRelatedTools()
// CODE XREF: Infragistics.Win.Printing.UltraPrintPreviewDialog__UltraPrintPreviewDialog_Load+F6↑p
// Infragistics.Win.Printing.UltraPrintPreviewDialog__ultraPrintPreviewControl1_PropertyChanged+43↑p
{
.maxstack 2
.locals init (bool V0,
bool V1)
ldarg.0
ldfld class [Infragistics2.Win.Misc.v10.1]Infragistics.Win.Printing.UltraPrintPreviewControl Infragistics.Win.Printing.UltraPrintPreviewDialog::ultraPrintPreviewControl1
callvirt instance class [System.Drawing]System.Drawing.Printing.PrintDocument [Infragistics2.Win.Misc.v10.1]Infragistics.Win.Printing.UltraPrintPreviewControl::get_Document()
ldnull
ceq
ldc.i4.0
ceq
stloc.0
ldloc.0
brfalse.s loc_588C
ldarg.0
ldfld class [Infragistics2.Win.Misc.v10.1]Infragistics.Win.Printing.UltraPrintPreviewControl Infragistics.Win.Printing.UltraPrintPreviewDialog::ultraPrintPreviewControl1
callvirt instance class [System.Drawing]System.Drawing.Printing.PrintDocument [Infragistics2.Win.Misc.v10.1]Infragistics.Win.Printing.UltraPrintPreviewControl::get_Document()
callvirt instance class [System.Drawing]System.Drawing.Printing.PrinterSettings [System.Drawing]System.Drawing.Printing.PrintDocument::get_PrinterSettings()
callvirt instance bool [System.Drawing]System.Drawing.Printing.PrinterSettings::get_IsValid()
br.s loc_588D
loc_588C: // CODE XREF: Infragistics.Win.Printing.UltraPrintPreviewDialog__UpdateDocumentRelatedTools+13↑j
ldc.i4.0
loc_588D: // CODE XREF: Infragistics.Win.Printing.UltraPrintPreviewDialog__UpdateDocumentRelatedTools+2A↑j
stloc.1
ldarg.0
ldfld class [Infragistics2.Win.UltraWinToolbars.v10.1]Infragistics.Win.UltraWinToolbars.UltraToolbarsManager Infragistics.Win.Printing.UltraPrintPreviewDialog::ultraToolbarsManager1
callvirt instance class [Infragistics2.Win.UltraWinToolbars.v10.1]Infragistics.Win.UltraWinToolbars.RootToolsCollection [Infragistics2.Win.UltraWinToolbars.v10.1]Infragistics.Win.UltraWinToolbars.UltraToolbarsManager::get_Tools()
ldstr aPrint // "Print"
callvirt instance class [Infragistics2.Win.UltraWinToolbars.v10.1]Infragistics.Win.UltraWinToolbars.ToolBase [Infragistics2.Win.UltraWinToolbars.v10.1]Infragistics.Win.UltraWinToolbars.ToolsCollectionBase::get_Item(string)
callvirt instance class [Infragistics2.Win.UltraWinToolbars.v10.1]Infragistics.Win.UltraWinToolbars.SharedProps [Infragistics2.Win.UltraWinToolbars.v10.1]Infragistics.Win.UltraWinToolbars.ToolBase::get_SharedProps()
Assembler code
ROM:0ABF db 23h ; #
ROM:0AC0 db 10h
ROM:0AC1 db 0EEh ; î
ROM:0AC2 db 0C9h ; É
ROM:0AC3 ; ---------------------------------------------------------------------------
ROM:0AC3 ld a, (4DA4h)
ROM:0AC6 and a
ROM:0AC7 ret nz
ROM:0AC8 ld ix, 4C00h
ROM:0ACC ld iy, 4DC8h
ROM:0AD0 ld de, 100h
ROM:0AD3 cp (iy+0)
ROM:0AD6 jp nz, loc_BD2
ROM:0AD9 ld (iy+0), 0Eh
ROM:0ADD ld a, (4DA6h)
ROM:0AE0 and a
ROM:0AE1 jr z, loc_AFE
ROM:0AE3 ld hl, (4DCBh)
ROM:0AE6 and a
ROM:0AE7 sbc hl, de
ROM:0AE9 jr nc, loc_AFE
ROM:0AEB ld hl, 4EACh
ROM:0AEE set 7, (hl)
ROM:0AF0 ld a, 9
ROM:0AF2 cp (ix+0Bh)
ROM:0AF5 jr nz, loc_AFB
ROM:0AF7 res 7, (hl)
ROM:0AF9 ld a, 9
ROM:0AFB
ROM:0AFB loc_AFB: ; CODE XREF: ROM:0AF5↑j
ROM:0AFB ld (4C0Bh), a
ROM:0AFE
ROM:0AFE loc_AFE: ; CODE XREF: ROM:0AE1↑j
ROM:0AFE ; ROM:0AE9↑j
ROM:0AFE ld a, (4DA7h)
Assembler code
code:0000006B
code:0000006B ; =============== S U B R O U T I N E =======================================
code:0000006B
code:0000006B ; External interrupt 6
code:0000006B
code:0000006B ; public IEX6
code:0000006B IEX6:
code:0000006B mov R7, A
code:0000006C addc A, RAM_0
code:0000006E addc A, RESERVED00FF ; RESERVED
code:00000070 addc A, @R0
code:00000071 addc A, @R1
code:00000072 addc A, R0
code:00000073 addc A, R1
code:00000074 addc A, R2
code:00000075 addc A, R3
code:00000076 addc A, R4
code:00000077 addc A, R5
code:00000078 addc A, R6
code:00000079 addc A, R7
code:0000007A ajmp IEX2+2 ; External interrupt 2
code:0000007A ; End of function IEX6
code:0000007A
code:0000007A ; ---------------------------------------------------------------------------
code:0000007C .byte 0x54 ; T
code:0000007D .byte 0
code:0000007E .word 0x54FF
code:00000080 .byte 0x55, 0, 0x55
code:00000083
code:00000083 ; =============== S U B R O U T I N E =======================================
code:00000083
code:00000083 ; Serial channel 1
code:00000083
code:00000083 ; public RI1_TI1
code:00000083 RI1_TI1:
code:00000083 mov R7, A
Assembler code
.text:00000114 ble _L2:8
.text:00000116 mov.w #0x22, r2 ; '"'
.text:0000011A mov.w r2, @er0
.text:0000011C mov.l @___infinity:32, er0
.text:00000124 mov.w r3, r3
.text:00000126 beq _L11:8
.text:00000128 jsr ___negsf2:24
.text:0000012C bra _L11:8
.text:0000012E ; ---------------------------------------------------------------------------
.text:0000012E
.text:0000012E _L2: ; CODE XREF: ___adjust+14↑j
.text:0000012E cmp.w #0xFECC, r4
.text:00000132 bge _L4:8
.text:00000134 mov.w #0x22, r2 ; '"'
.text:00000138 mov.w r2, @er0
.text:0000013A mov.l @_LC0:16, er0
.text:00000140 bra _L11:8
.text:00000142 ; ---------------------------------------------------------------------------
.text:00000142
.text:00000142 _L4: ; CODE XREF: ___adjust+32↑j
.text:00000142 mov.l @er1, er5
.text:00000146 mov.w r3, r3
.text:00000148 beq _L6:8
.text:0000014A mov.l er5, er0
.text:0000014C jsr ___negsf2:24
.text:00000150 mov.l er0, er5
.text:00000152
.text:00000152 _L6: ; CODE XREF: ___adjust+48↑j
.text:00000152 mov.w r4, r4
.text:00000154 bne _L7:8
.text:00000156 mov.l er5, er0
.text:00000158 bra _L11:8
.text:0000015A ; ---------------------------------------------------------------------------
.text:0000015A
.text:0000015A _L7: ; CODE XREF: ___adjust+54↑j
.text:0000015A mov.w r4, r4
Assembler code
.text:00000020
.text:00000020 # =============== S U B R O U T I N E =======================================
.text:00000020
.text:00000020 # Attributes: library function
.text:00000020
.text:00000020 .global __Ldoprnt
.text:00000020 __Ldoprnt:
.text:00000020 lda 0xB0(sp), sp
.text:00000024 st g8, 0xE0(fp)
.text:00000028 st g9, 0xE4(fp)
.text:0000002C st g10, 0xE8(fp)
.text:00000030 st g11, 0xEC(fp)
.text:00000034 mov g0, r12
.text:00000038 mov g1, r7
.text:0000003C mov g2, r6
.text:00000040 mov 0, g1
.text:00000044
.text:00000044 loc_44: # DATA XREF: __Ldoprnt+3C↓o
.text:00000044 mov 5, g2
.text:00000048 lda 0x40(fp), g0
.text:0000004C
.text:0000004C loc_4C: # DATA XREF: __Ldoprnt:loc_3AC↓o
.text:0000004C mov g3, r3
.text:00000050 st g14, 0xA0(fp)
.text:00000054 call _memset
.text:00000058 mov 0, g1
.text:0000005C lda loc_44, g2
.text:00000060 lda 0x50(fp), g0
.text:00000064 call _memset
.text:00000068
.text:00000068 loc_68: # DATA XREF: __Ldoprnt:loc_3D0↓o
.text:00000068 ldib (r12), g4
.text:0000006C
.text:0000006C loc_6C: # DATA XREF: __Ldoprnt+348↓o
.text:0000006C mov g14, g5
Assembler code
$CODE$:00004768
$CODE$:00004768 # =============== S U B R O U T I N E =======================================
$CODE$:00004768
$CODE$:00004768 # THUNK
$CODE$:00004768
$CODE$:00004768 # __int32 __fastcall sigblock(__int32 mask)
$CODE$:00004768 sigblock: # CODE XREF: sub_47C8+118C↓p
$CODE$:00004768 # DATA XREF: sigblock↓o ...
$CODE$:00004768
$CODE$:00004768 es_rp = 0x18
$CODE$:00004768
$CODE$:00004768 ldw -0x2D0(%dp), %r21 # .sigblock
$CODE$:0000476C ldw -0x2CC(%dp), %r19 # dword_40001614
$CODE$:00004770 ldsid (%r21), %r1
$CODE$:00004774 mtsp %r1, %sr0
$CODE$:00004778 be 0(%sr0,%r21)
$CODE$:0000477C stw %rp, -es_rp(%sp)
$CODE$:0000477C
$CODE$:0000477C # End of function sigblock
$CODE$:0000477C
$CODE$:00004780
$CODE$:00004780 # =============== S U B R O U T I N E =======================================
$CODE$:00004780
$CODE$:00004780 # THUNK
$CODE$:00004780
$CODE$:00004780 # __int32 __fastcall sigsetmask(__int32 mask)
$CODE$:00004780 sigsetmask: # CODE XREF: sub_47C8+1218↓p
$CODE$:00004780 # DATA XREF: sigsetmask↓o ...
$CODE$:00004780
$CODE$:00004780 es_rp = 0x18
$CODE$:00004780
$CODE$:00004780 ldw -0x368(%dp), %r21 # .sigsetmask
$CODE$:00004784 ldw -0x364(%dp), %r19 # dword_4000157C
$CODE$:00004788 ldsid (%r21), %r1
$CODE$:0000478C mtsp %r1, %sr0
Assembler code
.text:000011C0
.text:000011C0 // =============== S U B R O U T I N E =======================================
.text:000011C0
.text:000011C0
.text:000011C0 // public _main
.text:000011C0 _main: // CODE XREF: __main+120↓p
.text:000011C0 addu -0x20, r2, r2
.text:000011C4 st.l 0x11(r2), r3
.text:000011C8 addu 0x10, r2, r3
.text:000011CC st.l 5(r3), r1
.text:000011D0 orh 0, r0, r31
.text:000011D4 call _printf
.text:000011D8 or 0xA000, r31, r16
.text:000011DC adds 0x10, r3, r31
.text:000011E0 ld.l 4(r3), r1
.text:000011E4 ld.l 0(r3), r3
.text:000011E8 bri r1
.text:000011EC shl r0, r31, r2
.text:000011EC // End of function _main
.text:000011EC
.text:000011F0 // ---------------------------------------------------------------------------
.text:000011F0 shl r0, r0, r0
.text:000011F4 shl r0, r0, r0
.text:000011F8 shl r0, r0, r0
.text:000011FC shl r0, r0, r0
.text:00001200
.text:00001200 // =============== S U B R O U T I N E =======================================
.text:00001200
.text:00001200
.text:00001200 // public _fclose
.text:00001200 _fclose: // CODE XREF: ___cleanup+68↓p
.text:00001200 addu -0x50, r2, r2
.text:00001204 st.l 1(r2), r1
.text:00001208 st.l 0x39(r2), r4
.text:0000120C st.l 0x3D(r2), r5
Assembler code
Assembler code
Assembler code
Assembler code
Assembler code
Assembler Code
Assembler code
Assembler code
Assembler Code
Assembler code
Assembler code
Assembler code
Assembler code
Assembler code
program:000E023C
program:000E023C ; =============== S U B R O U T I N E =======================================
program:000E023C
program:000E023C ; Attributes: bp-based frame
program:000E023C
program:000E023C ; public $_pput
program:000E023C $_pput:
program:000E023C
program:000E023C var_2 = -2
program:000E023C
program:000E023C ENTER #2
program:000E023F MOV.W R1, var_2[FB]
program:000E0242 MOV.B p4, R0L ; Port P4 register
program:000E0245 MOV.B #0, R0H
program:000E0246 BTST #4, R0
program:000E0249 JEQ/Z loc_E024F
program:000E024B MOV.W #-1, R0
program:000E024D EXITD
program:000E024F ; ---------------------------------------------------------------------------
program:000E024F
program:000E024F loc_E024F: ; CODE XREF: $_pput+D↑j
program:000E024F ; $_pput+1A↓j
program:000E024F MOV.B p4, R0L ; Port P4 register
program:000E0252 MOV.B #0, R0H
program:000E0253 BTST #5, R0
program:000E0256 JEQ/Z loc_E024F
program:000E0258 MOV.B var_2[FB], p5 ; Port P5 register
program:000E025D MOV.W #0, var_2[FB]
program:000E0260
program:000E0260 loc_E0260: ; CODE XREF: $_pput+2F↓j
program:000E0260 CMP.W #0Ah, var_2[FB]
program:000E0265 JGE loc_E026D
program:000E0268 ADD.W #1, var_2[FB]
program:000E026B JMP.B loc_E0260
program:000E026D ; ---------------------------------------------------------------------------
program:000E026D
program:000E026D loc_E026D: ; CODE XREF: $_pput+29↑j
program:000E026D MOV.B #8, p4 ; Port P4 register
.text:0000000000421100
.text:0000000000421100 // =============== S U B R O U T I N E =======================================
.text:0000000000421100
.text:0000000000421100
.text:0000000000421100 sub_421100: // CODE XREF: sub_41FF40+3C↑p
.text:0000000000421100 alloc r37 = ar.pfs, 0, 9, 2, 0
.text:0000000000421106 mov r39 = pr
.text:000000000042110C adds sp = -32, sp
.text:0000000000421110 or r40 = gp, r0;;
.text:0000000000421116 cmp4.eq p14, p15 = 2, r32
.text:000000000042111C mov r36 = b0;;
.text:0000000000421120 ld8.nta r3 = [sp]
.text:0000000000421126 mov.i r38 = ar.lc // loop count register
.text:000000000042112C (p14) br.cond.dpnt.few loc_4211D0;;
.text:0000000000421130 cmp4.eq p14, p15 = 1, r0
.text:0000000000421136 cmp4.eq p13, p0 = 15, r32
.text:000000000042113C cmp4.eq p12, p0 = 21, r32;;
.text:0000000000421140 cmp4.eq.or.andcm p14, p15 = 4, r32
.text:0000000000421146 cmp4.eq.or.andcm p14, p15 = 8, r32
.text:000000000042114C cmp4.eq.or.andcm p14, p15 = 11, r32
.text:0000000000421150 (p14) br.cond.dpnt.few loc_4211B0
.text:0000000000421156 (p13) br.cond.dpnt.few loc_4211A0
.text:000000000042115C (p12) br.cond.dpnt.few loc_421190;;
.text:0000000000421160 cmp4.eq p14, p15 = 22, r32
.text:0000000000421166 nop.f 0
.text:000000000042116C (p14) br.cond.dpnt.few loc_421180;;
.text:0000000000421170 mov r8 = -1
.text:0000000000421176 nop.f 0
.text:000000000042117C br.few loc_421430;;
.text:0000000000421180 // ---------------------------------------------------------------------------
.text:0000000000421180
.text:0000000000421180 loc_421180: // CODE XREF: sub_421100+6C↑j
.text:0000000000421180 addl r28 = -2086752, gp // unk_4308A0
.text:0000000000421186 nop.f 0
.text:000000000042118C br.few loc_4211E0;;
P:000000C0 ; ===========================================================================
P:000000C0
P:000000C0 ; Segment type: Pure code
P:000000C0 .section P
P:000000C0
P:000000C0 ; =============== S U B R O U T I N E =======================================
P:000000C0
P:000000C0
P:000000C0 sub_C0:
P:000000C0 addi sp, #-0x20 || nop
P:000000C4 seth R0, #0x3F80
P:000000C8 or3 R0, R0, #0
P:000000CC st R0, @(0x1C, sp)
P:000000D0 seth R0, #0x4000
P:000000D4 or3 R0, R0, #0
P:000000D8 st R0, @(0x18, sp)
P:000000DC ld R0, @(0x1C, sp)
P:000000E0 ld R1, @(0x18, sp)
P:000000E4 fadd R0, R0, R1
P:000000E8 seth R1, #0x4000
P:000000EC or3 R1, R1, #0
P:000000F0 fdiv R0, R0, R1
P:000000F4 st R0, @(0x14, sp)
P:000000F8 ld R0, @(0x14, sp)
P:000000FC ld R1, @(0x18, sp)
P:00000100 ld R2, @(0x1C, sp)
P:00000104 fmul R1, R1, R2
P:00000108 fsub R0, R0, R1
P:0000010C st R0, @(0x10, sp)
P:00000110 ld R0, @(0x10, sp)
P:00000114 ftoi R0, R0
P:00000118 st R0, @(0xC, sp)
P:0000011C ld R0, @(0xC, sp)
P:00000120 srai R0, #2 || nop
P:00000124 itof R0, R0
CODE:80148710 lrv $v13[0], 2($t5)
CODE:80148714
CODE:80148714 loc_80148714: # CODE XREF: CODE:80148840↓j
CODE:80148714 addi $s4, 9
CODE:80148718 vmudn $v30, $v3, $v23[0]
CODE:8014871C addi $s5, 9
CODE:80148720 vmadn $v30, $v4, $v23[0]
CODE:80148724 ldv $v1[0], 0($s4)
CODE:80148728 vmudn $v29, $v5, $v23[0]
CODE:8014872C lbu $at, 0($s5)
CODE:80148730 vmadn $v29, $v6, $v23[0]
CODE:80148734 blez $t6, loc_80148744
CODE:80148738 andi $a7, $at, 0xF
CODE:8014873C vmudm $v30, $v22[8]
CODE:80148740 vmudm $v29, $v22[8]
CODE:80148744
CODE:80148744 loc_80148744: # CODE XREF: CODE:80148734↑j
CODE:80148744 sll $a7, 5
CODE:80148748 vand $v3, $v25, $v1[8]
CODE:8014874C add $t5, $a7, $t7
CODE:80148750 vand $v4, $v24, $v1[9]
CODE:80148754 vand $v5, $v25, $v1[10]
CODE:80148758 vand $v6, $v24, $v1[11]
CODE:8014875C srl $t6, $at, 4
CODE:80148760 vmudh $v2, $v21, $v27[14]
CODE:80148764 li $v0, 0xC
CODE:80148768 vmadh $v2, $v20, $v27[15]
CODE:8014876C sub $t6, $v0, $t6
CODE:80148770 vmadh $v2, $v19, $v30[8]
CODE:80148774 addi $v0, $t6, -1
CODE:80148778 vmadh $v2, $v18, $v30[9]
CODE:8014877C li $v1, 1
CODE:80148780 vmadh $v2, $v17, $v30[10]
CODE:80148784 sll $v1, 15
CODE:80148788 vmadh $v2, $v16, $v30[11]
ROM_:8000 ; ===========================================================================
ROM_:8000
ROM_:8000 ; Segment type: Pure data
ROM_:8000 SEGMENT ROM_
ROM_:8000 .org 8000h
ROM_:8000
ROM_:8000 ; =============== S U B R O U T I N E =======================================
ROM_:8000
ROM_:8000
ROM_:8000 ; public __RESET
ROM_:8000 __RESET: ; DATA XREF: USER_VEC:FFFE↓o
ROM_:8000 ldt #2
ROM_:8003 ldd 0,#0
ROM_:8007 ldd 1,#1000h
ROM_:800B ldd 2,#2000h
ROM_:800F ldd 3,#3000h
ROM_:8013 sem
ROM_:8014 abs.b A
ROM_:8015 abs.b B
ROM_:8017 clm
ROM_:8018 abs A
ROM_:8019 abs B
ROM_:801B absd.d E
ROM_:801D sem
ROM_:801E adc.b A,#12h
ROM_:8021 clm
ROM_:8022 adc A,#1234h
ROM_:8026 adc A,DP3:word_300F
ROM_:8029 adc A,DP3:word_300F,X
ROM_:802C adc A,(DP3:word_3006)
ROM_:802F adc A,(DP3:word_3006,X)
ROM_:8032 adc A,(DP3:word_3006),Y
ROM_:8035 adc A,L(DP3:tbyte_3009)
ROM_:8038 adc A,L(DP3:tbyte_3009),Y
ROM_:803B adc A,12h,S
seg000:00008051 lda A, word_815B
seg000:00008054 pha
seg000:00008055 pea #0
seg000:00008058 pea #80h ; '€'
seg000:0000805B pea #0
seg000:0000805E pea #817Ch
seg000:00008061 jsrl sub_1800D
seg000:00008065 lda A, #6B7h
seg000:00008068 tas
seg000:00008069 lda A, word_8151
seg000:0000806C pha
seg000:0000806D lda A, word_814F
seg000:00008070 pha
seg000:00008071 pea #1
seg000:00008074 pea #2010h
seg000:00008077 jsrl sub_1803F
seg000:0000807B lda A, word_8155
seg000:0000807E pha
seg000:0000807F lda A, word_8153
seg000:00008082 pha
seg000:00008083 pea #1
seg000:00008086 pea #2014h
seg000:00008089 jsrl sub_1803F
seg000:0000808D lda A, word_8165
seg000:00008090 pha
seg000:00008091 lda A, word_8163
seg000:00008094 pha
seg000:00008095 pea #1
seg000:00008098 pea #2000h
seg000:0000809B pea #1
seg000:0000809E pea #0AED5h
seg000:000080A1 jsrl sub_1800D
seg000:000080A5 lda A, word_8161
seg000:000080A8 pha
seg000:000080A9 lda A, word_815F
// Segment type: Pure code
public synchronized void reset()
max_stack 4
max_locals 2
{
invokestatic java.security.IdentityScope.getSystemScope()
// CODE XREF: <init>+5↑P
astore_1 // met004_slot001
aload_1 // met004_slot001
instanceof sun.security.provider.IdentityDatabase
ifeq met004_47
aload_0 // met004_slot000
aload_1 // met004_slot001
checkcast sun.security.provider.IdentityDatabase
putfield scope
aload_0 // met004_slot000
new java.lang.StringBuffer
dup
ldc "installing "
invokespecial java.lang.StringBuffer.<init>(java.lang.String)
aload_1 // met004_slot001
invokevirtual java.lang.StringBuffer.append(java.lang.Object)
ldc " as the scope for signers."
invokevirtual java.lang.StringBuffer.append(java.lang.String)
invokevirtual java.lang.StringBuffer.toString()
invokevirtual debug(java.lang.String)
goto met004_53
met004_47: // CODE XREF: reset+8↑j
aload_0 // met004_slot000
ldc "no signer scope found."
.text:00400838
.text:00400838 # =============== S U B R O U T I N E =======================================
.text:00400838
.text:00400838
.text:00400838 sub_400838: # CODE XREF: sub_400700+3C↑p
.text:00400838 # sub_400778+44↑p ...
.text:00400838
.text:00400838 var_s0 = 0
.text:00400838 var_s4 = 4
.text:00400838
.text:00400838 addiu $sp, -0x20
.text:0040083C sw $s0, 0x18+var_s0($sp)
.text:00400840 move $s0, $a0
.text:00400844 bnez $s0, loc_400894
.text:00400848 sw $ra, 0x18+var_s4($sp)
.text:0040084C la $t6, unk_10000A94
.text:00400850 li $t7, unk_10000455
.text:00400858 lui $s0, 0x1000
.text:0040085C sltu $at, $t6, $t7
.text:00400860 bnez $at, loc_40088C
.text:00400864 li $s0, unk_10000454
.text:00400868
.text:00400868 loc_400868: # CODE XREF: sub_400838+4C↓j
.text:00400868 beqz $s0, loc_400878
.text:0040086C nop
.text:00400870 jal sub_400838
.text:00400874 move $a0, $s0
.text:00400878
.text:00400878 loc_400878: # CODE XREF: sub_400838:loc_400868↑j
.text:00400878 la $t8, unk_10000A94
.text:0040087C addiu $s0, 0x10
.text:00400880 sltu $at, $s0, $t8
.text:00400884 bnez $at, loc_400868
.text:00400888 nop
.text:0040088C
.text:0040088C loc_40088C: # CODE XREF: sub_400838+28↑j
.text:0040088C b loc_400970
seg000:81D8
seg000:81D8 ; =============== S U B R O U T I N E =======================================
seg000:81D8
seg000:81D8
seg000:81D8 sub_81D8: ; CODE XREF: seg000:8F8C↓p
seg000:81D8 lda 3, X
seg000:81DA pha
seg000:81DB jsr sub_815F
seg000:81DE jsr sub_818C
seg000:81E1 lda $FB, X
seg000:81E3 sta 0, X
seg000:81E5 lda $FC, X
seg000:81E7 sta 1, X
seg000:81E9 pla
seg000:81EA bpl locret_81FD
seg000:81EC lda 0, X
seg000:81EE eor #$FF
seg000:81F0 clc
seg000:81F1 adc #1
seg000:81F3 sta 0, X
seg000:81F5 lda 1, X
seg000:81F7 eor #$FF
seg000:81F9 adc #0
seg000:81FB sta 1, X
seg000:81FD
seg000:81FD locret_81FD: ; CODE XREF: sub_81D8+12↑j
seg000:81FD rts
seg000:81FD ; End of function sub_81D8
seg000:81FD
seg000:81FE
seg000:81FE ; =============== S U B R O U T I N E =======================================
seg000:81FE
seg000:81FE
seg000:81FE sub_81FE: ; CODE XREF: seg000:8C2B↓p
seg000:81FE ; sub_9D0C+1↓j
seg000:81FE lda 3, X
ROM:1082
ROM:1082 ! =============== S U B R O U T I N E =======================================
ROM:1082
ROM:1082
ROM:1082 sub_1082: ! near
ROM:1082 mov:g.w @(0xC:8,r3), r0
ROM:1085 mov:g.w @(0xA:8,r3), r2
ROM:1088 bra loc_109D:8
ROM:108A ! ---------------------------------------------------------------------------
ROM:108A
ROM:108A loc_108A: ! CODE XREF: sub_1082:loc_109D↓j
ROM:108A mov:g.w @r0+, r4
ROM:108C mov:g.w @r0+, r1
ROM:108E shlr.w r1
ROM:1090 sub.w #1:16, r1
ROM:1094
ROM:1094 loc_1094: ! CODE XREF: sub_1082+14↓j
ROM:1094 clr.w @r4+
ROM:1096 scb/f r1, loc_1094:8
ROM:1099 sub.w #1:16, r2
ROM:109D
ROM:109D loc_109D: ! CODE XREF: sub_1082+6↑j
ROM:109D bne loc_108A:8
ROM:109F mov:g.w @(0x10:8,r3), r4
ROM:10A2
ROM:10A2 loc_10A2: ! CODE XREF: sub_1082+34↓j
ROM:10A2 mov:g.w @r4+, r0
ROM:10A4 beq loc_10B8:8
ROM:10A6 mov:g.w @r4+, r1
ROM:10A8
ROM:10A8 loc_10A8: ! CODE XREF: sub_1082+2C↓j
ROM:10A8 mov:g.b @r4+, r2
ROM:10AA mov:g.b r2, @r1+
ROM:10AC add:q.w #-1, r0
ROM:10AE bne loc_10A8:8
.text:5FFE29A8 li $s1, 1
.text:5FFE29AC
.text:5FFE29AC $L137: # CODE XREF: read_logfile(char const *)+138↑j
.text:5FFE29AC # read_logfile(char const *)+158↑j
.text:5FFE29AC beqz $s1, $L134
.text:5FFE29B0 nop
.text:5FFE29B4
.text:5FFE29B4 $Lb69: # Alternative name is 'LM268'
.text:5FFE29B4 addiu $v0, $fp, 0x750+var_428
.text:5FFE29B8 move $a0, $v0 # char *
.text:5FFE29BC jal get_time__FPCc # get_time(char const *)
.text:5FFE29C0 nop
.text:5FFE29C4 sw $v0, 0x750+var_110($fp)
.text:5FFE29C8 lw $v0, 0x750+var_110($fp)
.text:5FFE29CC nop
.text:5FFE29D0 bnez $v0, $L138
.text:5FFE29D4 nop
.text:5FFE29D8
.text:5FFE29D8 LM269:
.text:5FFE29D8 li $v0, $LC37 # "Illegal time"
.text:5FFE29E0 sw $v0, 0x750+var_11C($fp)
.text:5FFE29E4
.text:5FFE29E4 LM270:
.text:5FFE29E4 j $L139
.text:5FFE29E8 nop
.text:5FFE29EC # ---------------------------------------------------------------------------
.text:5FFE29EC
.text:5FFE29EC $L138: # CODE XREF: read_logfile(char const *)+188↑j
.text:5FFE29EC lw $v0, from_time # Alternative name is 'LM271'
.text:5FFE29F0 lw $v1, 0x750+var_110($fp)
.text:5FFE29F4 nop
.text:5FFE29F8 sltu $v0, $v1
.text:5FFE29FC bnez $v0, $L140
.text:5FFE2A00 nop
.text:5FFE2A04 j LM259
.text:0000073C
.text:0000073C # =============== S U B R O U T I N E =======================================
.text:0000073C
.text:0000073C
.text:0000073C sub_73C: # CODE XREF: sub_0+154↑p
.text:0000073C # DATA XREF: .rodata.sceResident:00003910↓o
.text:0000073C
.text:0000073C var_s0 = 0
.text:0000073C var_s4 = 4
.text:0000073C var_s8 = 8
.text:0000073C var_sC = 0xC
.text:0000073C
.text:0000073C addiu $sp, -0x10
.text:00000740 sw $s0, var_s0($sp)
.text:00000744 lui $v0, 0x8002
.text:00000748 move $s0, $a0
.text:0000074C sltiu $a0, 0x43 # 'C'
.text:00000750 sw $s1, var_s4($sp)
.text:00000754 ori $v1, $v0, 0x65 # 'e'
.text:00000758 move $s1, $zero
.text:0000075C sw $ra, var_sC($sp)
.text:00000760 beqz $a0, loc_7A8
.text:00000764 sw $s2, var_s8($sp)
.text:00000768 jal sub_3180
.text:0000076C nop
.text:00000770 sll $a5, $s0, 3
.text:00000774 subu $a4, $a5, $s0
.text:00000778 lui $a3, %hi(unk_3C14)
.text:0000077C sll $a1, $a4, 3
.text:00000780 addiu $a2, $a3, %lo(unk_3C14)
.text:00000784 addu $a0, $a1, $a2
.text:00000788 lw $v1, 0($a0)
.text:0000078C bnez $v1, loc_7C4
.text:00000790 move $s2, $v0
.text:00000794 lui $a6, 0x8002
.text:00003E68
.text:00003E68 # =============== S U B R O U T I N E =======================================
.text:00003E68
.text:00003E68
.text:00003E68 sub_3E68: # CODE XREF: McGuiSave+64↓p
.text:00003E68 # McGuiLoad+64↓p
.text:00003E68
.text:00003E68 var_s0 = 0
.text:00003E68 var_s4 = 4
.text:00003E68 var_s8 = 8
.text:00003E68 var_sC = 0xC
.text:00003E68 var_s10 = 0x10
.text:00003E68
.text:00003E68 addiu $sp, -0x28
.text:00003E6C lw $a0, side
.text:00003E74 li $a1, 0x10
.text:00003E78 sw $s1, 0x10+var_s4($sp)
.text:00003E7C li $s1, ot
.text:00003E84 sw $ra, 0x10+var_s10($sp)
.text:00003E88 sw $s3, 0x10+var_sC($sp)
.text:00003E8C sw $s2, 0x10+var_s8($sp)
.text:00003E90 sw $s0, 0x10+var_s0($sp)
.text:00003E94 sll $a0, 6
.text:00003E98 jal ClearOTag
.text:00003E9C addu $a0, $s1
.text:00003EA0 li $v1, (sDraw+0x17A)
.text:00003EA8 lh $v0, (aSsvabtransferF+6 - 0x282)($v1) # "ransfer failed (%d)\n"
.text:00003EAC nop
.text:00003EB0 blez $v0, loc_3F7C
.text:00003EB4 nop
.text:00003EB8 move $s0, $v1
.text:00003EBC li $s3, disp
.text:00003EC4 li $s2, draw
.text:00003ECC
.text:00003ECC loc_3ECC: # CODE XREF: sub_3E68+10C↓j
.text:00003ECC lhu $v0, 0($s0)
.text:00003E68
.text:00003E68 # =============== S U B R O U T I N E =======================================
.text:00003E68
.text:00003E68
.text:00003E68 sub_3E68: # CODE XREF: McGuiSave+64↓p
.text:00003E68 # McGuiLoad+64↓p
.text:00003E68
.text:00003E68 var_s0 = 0
.text:00003E68 var_s4 = 4
.text:00003E68 var_s8 = 8
.text:00003E68 var_sC = 0xC
.text:00003E68 var_s10 = 0x10
.text:00003E68
.text:00003E68 addiu $sp, -0x28
.text:00003E6C lw $a0, side
.text:00003E74 li $a1, 0x10
.text:00003E78 sw $s1, 0x10+var_s4($sp)
.text:00003E7C li $s1, ot
.text:00003E84 sw $ra, 0x10+var_s10($sp)
.text:00003E88 sw $s3, 0x10+var_sC($sp)
.text:00003E8C sw $s2, 0x10+var_s8($sp)
.text:00003E90 sw $s0, 0x10+var_s0($sp)
.text:00003E94 sll $a0, 6
.text:00003E98 jal ClearOTag
.text:00003E9C addu $a0, $s1
.text:00003EA0 li $v1, (sDraw+0x17A)
.text:00003EA8 lh $v0, (aSsvabtransferF+6 - 0x282)($v1) # "ransfer failed (%d)\n"
.text:00003EAC nop
.text:00003EB0 blez $v0, loc_3F7C
.text:00003EB4 nop
.text:00003EB8 move $s0, $v1
.text:00003EBC li $s3, disp
.text:00003EC4 li $s2, draw
.text:00003ECC
.text:00003ECC loc_3ECC: # CODE XREF: sub_3E68+10C↓j
.text:00003ECC lhu $v0, 0($s0)
Assembler code
.text:10001088
.text:10001088 loc_10001088: # DATA XREF: .pdata:10004028↓o
.text:10001088 lw $t6, 8($s0)
.text:1000108C beqzl $t6, loc_100010F4
.text:10001090 li $v0, 1
.text:10001094 sw $zero, 8($s0)
.text:10001098 jal closesocket
.text:1000109C lw $a0, 4($s0)
.text:100010A0 lw $a0, 0x14($s0)
.text:100010A4 li $t7, 0xFFFFFFFF
.text:100010A8 sw $t7, 4($s0)
.text:100010AC beqz $a0, loc_100010CC
.text:100010B0 sw $zero, 8($s0)
.text:100010B4 lw $t8, 0x10($s0)
.text:100010B8 move $a1, $zero
.text:100010BC beql $t8, $a0, loc_100010D0
.text:100010C0 lw $a0, 0x10($s0)
.text:100010C4 jal VirtualFree
.text:100010C8 li $a2, 0xC000
.text:100010CC
.text:100010CC loc_100010CC: # CODE XREF: sub_10001078+34↑j
.text:100010CC lw $a0, 0x10($s0)
.text:100010D0
.text:100010D0 loc_100010D0: # CODE XREF: sub_10001078+44↑j
.text:100010D0 move $a1, $zero
.text:100010D4 jal VirtualFree
.text:100010D8 li $a2, 0xC000
.text:100010DC lw $v0, 0x1C($s0)
.text:100010E0 beqzl $v0, loc_100010F4
.text:100010E4 li $v0, 1
.text:100010E8 jal ??3@YAXPAX@Z # operator delete(void *)
.text:100010EC move $a0, $v0
.text:100010F0 li $v0, 1
.text:100010F4
.text:100010F4 loc_100010F4: # CODE XREF: sub_10001078+14↑j
.text:100010F4 # sub_10001078+68↑j
.text:100010F4 lw $s0, 0x18+var_s0($sp)
Assembler code
00003F20
00003F20 ; =============== S U B R O U T I N E =======================================
00003F20
00003F20
00003F20 public start
00003F20 start proc far
00003F20 call sub_1050
00003F25 or eax, eax
00003F27 jz loc_3F3E
00003F2D lea edx, large aDpmiServerInit ; "DPMI server initialization error -- out"...
00003F33 mov ah, 9
00003F35 int 21h ; DOS - PRINT STRING
00003F35 ; DS:DX -> string terminated by "$"
00003F37 xor eax, eax
00003F39 jmp locret_3F44
00003F3E ; ---------------------------------------------------------------------------
00003F3E
00003F3E loc_3F3E: ; CODE XREF: start+7↑j
00003F3E lea eax, large SetVectors
00003F44
00003F44 locret_3F44: ; CODE XREF: start+19↑j
00003F44 retf
00003F44 start endp
00003F44
00003F44 _text ends
00003F44
00003F44
00003F44 end start
Assembler code
seg003:0A36 push si
seg003:0A37 push di
seg003:0A38 mov [bp+var_C], 0
seg003:0A3D mov [bp+fDocDir], 0
seg003:0A42 call FILEPUSHDIR ; void pascal FilePushDir(void) in file.h
seg003:0A47 test byte_9E, 1
seg003:0A4C jz short loc_410D
seg003:0A4E mov [bp+fDocDir], 8
seg003:0A53 push [bp+fDocDir] ; fDocDir
seg003:0A56 call FOAMSETDOCUMENTDIR ; void pascal FoamSetDocumentDir(FDocumentDir fDocDir) in foam.goh
seg003:0A5B jmp short loc_411A
seg003:0A5D ; ---------------------------------------------------------------------------
seg003:0A5D
seg003:0A5D loc_410D: ; CODE XREF: sub_40E0+1C↑j
seg003:0A5D mov [bp+var_C], 31h ; '1'
seg003:0A62 push [bp+var_C] ; sp
seg003:0A65 call FILESETSTANDARDPATH ; void pascal FileSetStandardPath(StandardPath sp) in file.h
seg003:0A6A
seg003:0A6A loc_411A: ; CODE XREF: sub_40E0+2B↑j
seg003:0A6A push 0
seg003:0A6C push 0C800h
seg003:0A6F call sub_5B83
seg003:0A74 mov [bp+var_16], ax
seg003:0A77 cmp [bp+var_16], 0
seg003:0A7B jz short loc_419E
seg003:0A7D test byte_9E, 1
seg003:0A82 jz short loc_4148
seg003:0A84 push word ptr [bp+name+2]
seg003:0A87 push word ptr [bp+name] ; name
seg003:0A8A call FILEDELETE ; word pascal FileDelete(const char *name) in file.h
seg003:0A8F les bx, [bp+name]
seg003:0A92 mov byte ptr es:[bx], 0
seg003:0A96 jmp short loc_4188
seg003:0A98 ; ---------------------------------------------------------------------------
seg003:0A98
seg003:0A98 loc_4148: ; CODE XREF: sub_40E0+52↑j
seg003:0A98 xor si, si
Assembler code
.text:10001140 lw $a0, 0x58+var_18($sp)
.text:10001144 lw $a1, 0x58+var_14($sp)
.text:10001148 jal memcpy
.text:1000114C li $a2, 0x400
.text:10001150 lw $t7, ReleaseMutex
.text:10001158 lw $a0, 0x58+var_1C($sp)
.text:1000115C jalr $t7
.text:10001160 nop
.text:10001164 lw $t8, CloseHandle
.text:1000116C lw $a0, 0x58+var_1C($sp)
.text:10001170 jalr $t8
.text:10001174 nop
.text:10001178 jal LoadLibraryW
.text:1000117C lw $a0, 0x58+var_18($sp)
.text:10001180 beqz $v0, loc_100011D0
.text:10001184 move $a0, $v0
.text:10001188 lw $t9, GetProcAddressW
.text:10001190 li $a1, aCreatetranspor # "CreateTransport"
.text:10001198 jalr $t9
.text:1000119C nop
.text:100011A0 jalr $v0
.text:100011A4 nop
.text:100011A8 sw $v0, dword_100030C4
.text:100011B0 lw $t1, 0($v0)
.text:100011B4 lw $t0, 0x58+var_18($sp)
.text:100011B8 move $a0, $v0
.text:100011BC lw $t2, 4($t1)
.text:100011C0 addiu $a1, $t0, 0x20C
.text:100011C4 lw $a2, 0x208($t0)
.text:100011C8 jalr $t2
.text:100011CC nop
.text:100011D0
.text:100011D0 loc_100011D0: # CODE XREF: CreateStream+180↑j
.text:100011D0 jal UnmapViewOfFile
.text:100011D4 lw $a0, 0x58+var_18($sp)
Assembler code
ROM:0020
ROM:0020 ; =============== S U B R O U T I N E =======================================
ROM:0020
ROM:0020 ; Attributes: bp-based frame
ROM:0020
ROM:0020 RESET_0: ; CODE XREF: RESET↑j
ROM:0020
ROM:0020 ; FUNCTION CHUNK AT ROM:00CB SIZE 00000001 BYTES
ROM:0020
ROM:0020 mov #$35F,sp
ROM:0022 mov #$D,st0
ROM:0024 mov #1,st1
ROM:0026 ; assume page = 1
ROM:0026 cntx s
ROM:0027 mov #1,st0
ROM:0029 mov #0,st1
ROM:002B ; assume page = 0
ROM:002B mov #$40,st2
ROM:002D cntx r
ROM:002E mov #$40,st2
ROM:0030 mov #0,cfgi
ROM:0032 mov #0,cfgj
ROM:0034 mov #$DD,a0
ROM:0036 brr loc_3E, eq
ROM:0037 mov #$C8DF,r0
ROM:0039 mov #$F955,r1
ROM:003B sub #1,a0
ROM:003C rep a0l
ROM:003D movp (r0)+1,(r1)+1
ROM:003E
ROM:003E loc_3E: ; CODE XREF: RESET_0+16↑j
ROM:003E call sub_91
ROM:0040 br loc_CB
ROM:0040 ; End of function RESET_0
ROM:0040
Assembler code
IROM:00080008
IROM:00080008 ; =============== S U B R O U T I N E =======================================
IROM:00080008
IROM:00080008 ; IRQ Manager
IROM:00080008
IROM:00080008 ; public IRQMANAGER_
IROM:00080008 IRQMANAGER_:
IROM:00080008 ADD 0x000000E2, SP ; 'â'
IROM:0008000A MOVX D3, (0x00000008,SP)
IROM:0008000D MOV A0, (0x00000018,SP)
IROM:0008000F MOV MDR, D3
IROM:00080011 MOV D3, (0x0000001C,SP)
IROM:00080013 MOVX D0, (0x00000014,SP)
IROM:00080016 MOVX D1, (0x00000010,SP)
IROM:00080019 MOVX D2, (0x0000000C,SP)
IROM:0008001C MOV A1, (0x00000004,SP)
IROM:0008001E MOV A2, (0x00000000,SP)
IROM:00080020 MOV 0x00000001, D3
IROM:00080022 MOVB D3, (0x00000003,SP)
IROM:00080025 MOV SP, A2
IROM:00080027 MOV PSW, D3
IROM:00080029 MOV (IAGR), D0 ; Interrupt accept group number register
IROM:0008002C ADD off_80368, D0
IROM:00080031 MOV D0, A0
IROM:00080033 MOV (0x00000000,A0), A0
IROM:00080035 AND 0x0000EFFF, PSW
IROM:00080039 BTST 0x00002000, D3
IROM:0008003D BNE loc_80058
IROM:0008003F OR 0x00001000, PSW
IROM:00080043 MOV (tbyte_8000), A1
IROM:00080047 ADD 0x00000000, A1
IROM:00080049 BEQ loc_80054
IROM:0008004B MOV (tbyte_8000), A1
IROM:0008004F MOV SP, (0x00000008,A1)
IROM:00080051 MOV unk_8186, SP
Assembler code
0010600C jmp loc_105F29
00106011 ; ---------------------------------------------------------------------------
00106011
00106011 loc_106011: ; DATA XREF: .text:00105E2E↑o
00106011 mov edx, offset aNew ; "new"
00106016 jmp loc_105F29
0010601B ; ---------------------------------------------------------------------------
0010601B
0010601B loc_10601B: ; DATA XREF: .text:00105E66↑o
0010601B mov edx, offset aNew_0 ; "new []"
00106020 jmp loc_105F29
00106025 ; ---------------------------------------------------------------------------
00106025
00106025 loc_106025: ; DATA XREF: .text:00105E32↑o
00106025 mov edx, offset aDelete ; "delete"
0010602A jmp loc_105F29
0010602F ; ---------------------------------------------------------------------------
0010602F
0010602F loc_10602F: ; DATA XREF: .text:00105E62↑o
0010602F mov edx, offset aDelete_0 ; "delete []"
00106034 jmp loc_105F29
00106039 ; ---------------------------------------------------------------------------
00106039
00106039 loc_106039: ; DATA XREF: .text:00105E36↑o
00106039 movzx edx, byte_10D7FC
00106040 jmp loc_105EC9
00106045 ; ---------------------------------------------------------------------------
00106045
00106045 loc_106045: ; DATA XREF: .text:00105E56↑o
00106045 test byte ptr [ecx+34h], 8
00106049 jz short loc_106052
0010604B mov eax, ecx
0010604D call sub_105D68
00106052
00106052 loc_106052: ; CODE XREF: .text:00106049↑j
00106052 mov edx, offset asc_10D83F ; "::"
Assembler code
.text:001A5498
.text:001A5498 # =============== S U B R O U T I N E =======================================
.text:001A5498
.text:001A5498
.text:001A5498 .globl SysTimerGet
.text:001A5498 SysTimerGet:
.text:001A5498
.text:001A5498 var_s0 = 0
.text:001A5498
.text:001A5498 addiu $sp, -0x10
.text:001A549C lui $a0, 0x41 # 'A'
.text:001A54A0 sd $ra, var_s0($sp)
.text:001A54A4 li $a0, sysTimerVarG
.text:001A54A8 lui $a1, 0x1000
.text:001A54AC lw $v0, (dword_416244 - 0x416238)($a0)
.text:001A54B0 lw $v1, 0x10000000
.text:001A54B4 lwu $a2, (dword_416240 - 0x416238)($a0)
.text:001A54B8 sll $v0, 21
.text:001A54BC dsll32 $v0, 0
.text:001A54C0 li $a1, 0x3D86
.text:001A54C4 daddu $v1, $a2
.text:001A54C8 dsrl32 $v0, 0
.text:001A54CC daddu $v1, $v0
.text:001A54D0 dsll $a0, $v1, 5
.text:001A54D4 dsubu $a0, $v1
.text:001A54D8 dsll $a0, 2
.text:001A54DC daddu $a0, $v1
.text:001A54E0 jal __divdi3
.text:001A54E4 dsll $a0, 3
.text:001A54E8 ld $ra, var_s0($sp)
.text:001A54EC dsll32 $v0, 0
.text:001A54F0 dsra32 $v0, 0
.text:001A54F4 jr $ra
.text:001A54F8 addiu $sp, 0x10
.text:001A54F8 # End of function SysTimerGet
.text:001A54F8
.text:001A54F8 # ---------------------------------------------------------------------------
Assembler code
cseg01:1044
cseg01:1044 ; =============== S U B R O U T I N E =======================================
cseg01:1044
cseg01:1044 ; Attributes: library function
cseg01:1044
cseg01:1044 __MemFree proc far ; CODE XREF: _ffree_+1A↓p
cseg01:1044 ; _nfree_+31↓p ...
cseg01:1044
cseg01:1044 ; FUNCTION CHUNK AT cseg01:1041 SIZE 00000003 BYTES
cseg01:1044
cseg01:1044 push si
cseg01:1045 push di
cseg01:1046 push cx
cseg01:1047 push ds
cseg01:1048 mov ds, dx
cseg01:104A or ax, ax
cseg01:104C jz short loc_1041
cseg01:104E mov si, ax
cseg01:1050 sub si, 2
cseg01:1053 mov ax, [si]
cseg01:1055 test al, 1
cseg01:1057 jz short loc_1041
cseg01:1059 and al, 0FEh
cseg01:105B mov di, si
cseg01:105D add di, ax
cseg01:105F test word ptr [di], 1
cseg01:1063 jnz short loc_1084
cseg01:1065 cmp di, [bx+6]
cseg01:1068 jnz short loc_106D
cseg01:106A mov [bx+6], si
cseg01:106D
cseg01:106D loc_106D: ; CODE XREF: __MemFree+24↑j
cseg01:106D add ax, [di]
cseg01:106F mov [si], ax
cseg01:1071 push bx
Assembler code
seg003:0244 jmp ObjMessage ; Jump
seg003:0249 ; ---------------------------------------------------------------------------
seg003:0249
seg003:0249 loc_49_249: ; DATA XREF: seg001:0084↑o
seg003:0249 push ax
seg003:024A push cx
seg003:024B push dx
seg003:024C push bp
seg003:024D call ContactSIMNumber ; Call Procedure
seg003:0252 mov ax, 6181h
seg003:0255 cmp cx, dx ; Compare Two Operands
seg003:0257 jz short loc_49_25C ; Jump if Zero (ZF=1)
seg003:0259 mov ax, 6180h
seg003:025C
seg003:025C loc_49_25C: ; CODE XREF: seg003:0257↑j
seg003:025C push dx
seg003:025D mov bx, seg seg007
seg003:0260 mov si, 24h ; '$'
seg003:0263 mov di, 8000h
seg003:0266 mov dl, 2
seg003:0268 call ObjMessage ; Call Procedure
seg003:026D pop dx
seg003:026E mov ax, 6181h
seg003:0271 or dx, dx ; Logical Inclusive OR
seg003:0273 jz short loc_49_278 ; Jump if Zero (ZF=1)
seg003:0275 mov ax, 6180h
seg003:0278
seg003:0278 loc_49_278: ; CODE XREF: seg003:0273↑j
seg003:0278 push ax
seg003:0279 mov bx, seg seg007
seg003:027C mov si, 48h ; 'H'
seg003:027F mov di, 8000h
seg003:0282 mov dl, 2
seg003:0284 call ObjMessage ; Call Procedure
seg003:0289 pop ax
Assembler code
cseg_01:0000A3A1 mov [ebp-8], edx
cseg_01:0000A3A4 mov edx, 0Eh
cseg_01:0000A3A9 call __setmagicvar_
cseg_01:0000A3AE mov eax, cs
cseg_01:0000A3B0 mov edx, 0Dh
cseg_01:0000A3B5 mov [ebp-8], ax
cseg_01:0000A3B9 lea eax, [ebp-8]
cseg_01:0000A3BC mov ebx, 0A34Ah
cseg_01:0000A3C1 call __setmagicvar_
cseg_01:0000A3C6 mov eax, 1
cseg_01:0000A3CB mov off_C304, ebx
cseg_01:0000A3D1 call __InitRtns
cseg_01:0000A3D6 mov eax, dword_C314
cseg_01:0000A3DB add eax, 3
cseg_01:0000A3DE and al, 0FCh
cseg_01:0000A3E0 xor edx, edx
cseg_01:0000A3E2 sub esp, eax
cseg_01:0000A3E4 mov ecx, esp
cseg_01:0000A3E6 mov ebx, dword_C314
cseg_01:0000A3EC mov eax, ecx
cseg_01:0000A3EE call memset_
cseg_01:0000A3F3 mov eax, ecx
cseg_01:0000A3F5 mov edx, [ebp-4]
cseg_01:0000A3F8 call __QNXInit_
cseg_01:0000A3FD mov ebx, esi
cseg_01:0000A3FF mov eax, 0FFh
cseg_01:0000A404 mov ecx, 2000h
cseg_01:0000A409 call __InitRtns
cseg_01:0000A40E mov dword_C318, ecx
cseg_01:0000A414 mov eax, edi
cseg_01:0000A416 push ds
cseg_01:0000A417 pop es
cseg_01:0000A418 assume es:dseg_01
cseg_01:0000A418 call sub_A010
cseg_01:0000A41D call exit_
Assembler code
seg001:02BA call near ptr VisCheckIfVisGrown
seg001:02BD jnb short loc_C3B
seg001:02BF push di
seg001:02C0 push es
seg001:02C1 mov di, seg seg087
seg001:02C4 mov es, di
seg001:02C6 assume es:seg087
seg001:02C6 mov di, 1548h
seg001:02C9 call ObjIsObjectInClass
seg001:02CE pop es
seg001:02CF assume es:nothing
seg001:02CF pop di
seg001:02D0 jb short loc_C1A
seg001:02D2 call FatalError
seg001:02D7 mov ax, 31h ; '1'
seg001:02DA
seg001:02DA loc_C1A: ; CODE XREF: GenClass_24967+2F↑j
seg001:02DA mov di, [si]
seg001:02DC add di, [di+4]
seg001:02DF test byte ptr [di+9], 1
seg001:02E3 jz short loc_C3B
seg001:02E5 push cx
seg001:02E6 mov cx, 0FFFFh
seg001:02E9 push cs
seg001:02EA call near ptr GenClass_24967
seg001:02ED pop cx
seg001:02EE jb short loc_C38
seg001:02F0 call FatalError
seg001:02F5 mov ax, 31h ; '1'
seg001:02F8
seg001:02F8 loc_C38: ; CODE XREF: GenClass_24967+4D↑j
seg001:02F8 stc
seg001:02F9 jnz short loc_C60
seg001:02FB
seg001:02FB loc_C3B: ; CODE XREF: GenClass_24967+16↑j
seg001:02FB ; GenClass_24967+1C↑j ...
seg001:02FB mov ax, si
Assembler code
.bss:000000CA
.bss:000000CA loc_CA: ; CODE XREF: nlm_start+33↑j
.bss:000000CA ; nlm_start+A1↑j ...
.bss:000000CA mov dword_E150, edi
.bss:000000D0 push 54524C41h
.bss:000000D5 push offset aAllocMemory ; "Alloc Memory"
.bss:000000DA push edi
.bss:000000DB call AllocateResourceTag
.bss:000000E0 mov dword_E018, eax
.bss:000000E5 push 544D4E43h
.bss:000000EA push offset aNonMovableMemo ; "Non Movable Memory"
.bss:000000EF push edi
.bss:000000F0 call AllocateResourceTag
.bss:000000F5 mov dword_E020, eax
.bss:000000FA push 53435250h
.bss:000000FF push offset aProcesses ; "Processes"
.bss:00000104 push edi
.bss:00000105 call AllocateResourceTag
.bss:0000010A mov dword_E15C, eax
.bss:0000010F push 4C4B5344h
.bss:00000114 push offset aDiskLocks ; "Disk Locks"
.bss:00000119 push edi
.bss:0000011A call AllocateResourceTag
.bss:0000011F mov dword_E01C, eax
.bss:00000124 push 4E524353h
.bss:00000129 push offset aScreens ; "Screens"
.bss:0000012E push edi
.bss:0000012F call AllocateResourceTag
.bss:00000134 add esp, 3Ch
.bss:00000137 mov dword_E158, eax
.bss:0000013C push 504D4553h
.bss:00000141 push offset aSemaphores ; "Semaphores"
.bss:00000146 push edi
.bss:00000147 call AllocateResourceTag
.bss:0000014C mov dword_E160, eax
Assembler code
Assembler code
cseg01:000102E1 lea eax, [ebp+var_44]
cseg01:000102E4 push 5
cseg01:000102E6 push eax
cseg01:000102E7 push esi
cseg01:000102E8 call WinFillRect
cseg01:000102ED add esp, 0Ch
cseg01:000102F0 mov [ebp+var_38], 0FAh ; 'ú'
cseg01:000102F7 mov [ebp+var_40], 0E9h ; 'é'
cseg01:000102FE lea eax, [ebp+var_84]
cseg01:00010304 push eax
cseg01:00010305 push 40h ; '@'
cseg01:00010307 push 2Bh ; '+'
cseg01:00010309 push 0
cseg01:0001030B push dword_20874
cseg01:00010311 call WinLoadString
cseg01:00010316 add esp, 14h
cseg01:00010319 lea eax, [ebp+var_84]
cseg01:0001031F lea edx, [ebp+var_44]
cseg01:00010322 push 100h
cseg01:00010327 push 0
cseg01:00010329 push 0FFFFFFFFh
cseg01:0001032B push edx
cseg01:0001032C push eax
cseg01:0001032D push 0FFFFFFFFh
cseg01:0001032F push esi
cseg01:00010330 call WinDrawText
cseg01:00010335 add esp, 1Ch
cseg01:00010338 push esi
cseg01:00010339 call WinEndPaint
cseg01:0001033E add esp, 4
cseg01:00010341 mov eax, 1
cseg01:00010346 pop esi
cseg01:00010347 pop edi
cseg01:00010348 pop ebx
cseg01:00010349 leave
.text:00000178
.text:00000178 loc_178: ; CODE XREF: XDPSCreateStandardColormaps+53↑j
.text:00000178 test esi, esi
.text:0000017A jnz short loc_19C
.text:0000017C lea eax, [ebp+var_84]
.text:00000182 push eax
.text:00000183 push [ebp+arg_4]
.text:00000186 push [ebp+arg_0]
.text:00000189 call XGetWindowAttributes
.text:0000018E add esp, 0Ch
.text:00000191 test eax, eax
.text:00000193 jz loc_21C
.text:00000199 mov esi, [ebp+var_6C]
.text:0000019C
.text:0000019C loc_19C: ; CODE XREF: XDPSCreateStandardColormaps+57↑j
.text:0000019C ; XDPSCreateStandardColormaps+62↑j
.text:0000019C cmp dword ptr [edi], 0
.text:0000019F jnz short loc_1A7
.text:000001A1 cmp [ebp+arg_4], 0
.text:000001A5 jz short loc_21C
.text:000001A7
.text:000001A7 loc_1A7: ; CODE XREF: XDPSCreateStandardColormaps+87↑j
.text:000001A7 push [ebp+arg_0]
.text:000001AA call FindDpyRec
.text:000001AF mov large ds:75E4h, eax
.text:000001B4 add esp, 4
.text:000001B7 test eax, eax
.text:000001B9 jz loc_570
.text:000001BF push esi
.text:000001C0 call XVisualIDFromVisual
.text:000001C5 mov [ebp+var_24], eax
.text:000001C8 lea eax, [ebp+var_88]
.text:000001CE push eax
.text:000001CF lea eax, [ebp+var_28]
.text:000001D2 push eax