;
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
; º This file is generated by The Interactive Disassembler (IDA) º
; º Copyright (c) 2006 by DataRescue sa/nv, <ida@datarescue.com> º
; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
;
; File Name : D:\EFIBUILD\FDEXTRACT\im\AppleBootPolicy.efi
; Format : Portable executable for 80386 (PE)
; Imagebase : 10000000
; Section 1. (virtual address 00000260)
; Virtual size : 00000563 ( 1379.)
; Section size in file : 00000580 ( 1408.)
; Offset to raw data for section: 00000260
; Flags 60000020: Text Executable Readable
; Alignment : default
unicode macro page,string,zero
irpc c,<string>
db '&c', page
endm
ifnb <zero>
dw zero
endif
endm
.686p
.mmx
.model flat
; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
; Segment type: Pure code
; Segment permissions: Read/Execute
_text segment para public 'CODE' use32
assume cs:_text
;org 10000260h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
; Attributes: bp-based frame
; BOOL __stdcall DllEntryPoint(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpReserved)
public DllEntryPoint
DllEntryPoint proc near
var_4 = dword ptr -4
hinstDLL = dword ptr 8
fdwReason = dword ptr 0Ch
lpReserved = dword ptr 10h
push ebp
mov ebp, esp
push ecx
mov ecx, [ebp+fdwReason]
mov eax, [ecx+3Ch]
mov dword_100009D4, ecx
mov ecx, [ecx+38h]
push esi
mov dword_100009DC, ecx
lea ecx, [ebp+var_4]
push ecx
push 0
mov esi, offset unk_10000994
push esi
mov dword_100009D8, eax
call dword ptr [eax+0ACh]
add esp, 0Ch
test eax, eax
jl short loc_1000029F
mov eax, 80000014h
jmp short loc_100002BA
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_1000029F: ; CODE XREF: DllEntryPoint+36j
and [ebp+fdwReason], 0
push offset unk_10000960
push 0
lea eax, [ebp+fdwReason]
push esi
push eax
mov eax, dword_100009D8
call dword ptr [eax+4Ch]
add esp, 10h
loc_100002BA: ; CODE XREF: DllEntryPoint+3Dj
pop esi
leave
retn
DllEntryPoint endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
; Attributes: bp-based frame
sub_100002BD proc near ; DATA XREF: .data:10000964o
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push ecx
lea eax, [ebp+var_8]
push eax
mov eax, dword_100009D8
push offset unk_100009B4
push [ebp+arg_0]
call dword ptr [eax+58h]
add esp, 0Ch
test eax, eax
jl short locret_10000324
lea eax, [ebp+var_4]
push eax
mov eax, [ebp+var_8]
push eax
call dword ptr [eax+8]
test eax, eax
pop ecx
pop ecx
jl short locret_10000324
push [ebp+arg_4]
mov eax, [ebp+var_4]
call sub_10000326
test eax, eax
pop ecx
jge short locret_10000324
push [ebp+arg_4]
push [ebp+var_4]
push [ebp+arg_0]
call sub_1000045C
add esp, 0Ch
test eax, eax
jge short locret_10000324
push [ebp+arg_4]
push [ebp+var_4]
push [ebp+arg_0]
call sub_10000536
add esp, 0Ch
locret_10000324: ; CODE XREF: sub_100002BD+1Ej
; sub_100002BD+2Fj ...
leave
retn
sub_100002BD endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
; Attributes: bp-based frame
sub_10000326 proc near ; CODE XREF: sub_100002BD+37p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
push ebx
push edi
mov edi, eax
push 0
lea eax, [ebp+var_4]
push eax
mov ebx, offset unk_100009A4
push ebx
push edi
call dword ptr [edi+24h]
add esp, 10h
cmp eax, 80000005h
jz short loc_10000353
mov eax, 8000000Eh
jmp short loc_10000394
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_10000353: ; CODE XREF: sub_10000326+24j
push esi
push [ebp+var_4]
call sub_10000602
mov esi, eax
test esi, esi
pop ecx
jnz short loc_1000036A
mov eax, 80000009h
jmp short loc_10000393
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_1000036A: ; CODE XREF: sub_10000326+3Bj
push esi
lea eax, [ebp+var_4]
push eax
push ebx
push edi
call dword ptr [edi+24h]
mov edi, eax
add esp, 10h
test edi, edi
jl short loc_10000387
call sub_10000693
mov ecx, [ebp+arg_0]
mov [ecx], eax
loc_10000387: ; CODE XREF: sub_10000326+55j
mov eax, dword_100009D8
push esi
call dword ptr [eax+30h]
pop ecx
mov eax, edi
loc_10000393: ; CODE XREF: sub_10000326+42j
pop esi
loc_10000394: ; CODE XREF: sub_10000326+2Bj
pop edi
pop ebx
leave
retn
sub_10000326 endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
; Attributes: bp-based frame
sub_10000398 proc near ; CODE XREF: sub_1000045C+Ep
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ecx
and [ebp+var_4], 0
push esi
push edi
mov esi, eax
push 0
lea eax, [ebp+var_4]
push eax
mov edi, offset unk_10000984
push edi
push esi
call dword ptr [esi+24h]
add esp, 10h
cmp eax, 80000005h
jz short loc_100003C9
mov eax, 8000000Eh
jmp loc_10000458
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_100003C9: ; CODE XREF: sub_10000398+25j
push ebx
push [ebp+var_4]
call sub_10000602
mov ebx, eax
test ebx, ebx
pop ecx
jnz short loc_100003E0
mov eax, 80000009h
jmp short loc_10000457
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_100003E0: ; CODE XREF: sub_10000398+3Fj
push ebx
lea eax, [ebp+var_4]
push eax
push edi
push esi
call dword ptr [esi+24h]
add esp, 10h
test eax, eax
mov [ebp+var_8], eax
jl short loc_1000044A
mov eax, ebx
loc_100003F6: ; CODE XREF: sub_10000398+82j
mov cl, [eax]
and cl, 7Fh
cmp cl, 7Fh
jnz short loc_10000406
cmp byte ptr [eax+1], 0FFh
jz short loc_1000044A
loc_10000406: ; CODE XREF: sub_10000398+66j
cmp cl, 4
jnz short loc_10000410
cmp [eax+1], cl
jz short loc_1000041C
loc_10000410: ; CODE XREF: sub_10000398+71j
xor ecx, ecx
mov ch, [eax+3]
mov cl, [eax+2]
add eax, ecx
jmp short loc_100003F6
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_1000041C: ; CODE XREF: sub_10000398+76j
lea edi, [eax+4]
mov eax, edi
call sub_100005CF
push eax
call sub_100005E1
mov esi, eax
test esi, esi
pop ecx
jz short loc_10000443
mov ecx, edi
mov edx, esi
call sub_100005BA
mov eax, [ebp+arg_0]
mov [eax], esi
jmp short loc_1000044A
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_10000443: ; CODE XREF: sub_10000398+99j
mov [ebp+var_8], 80000009h
loc_1000044A: ; CODE XREF: sub_10000398+5Aj
; sub_10000398+6Cj ...
mov eax, dword_100009D8
push ebx
call dword ptr [eax+30h]
mov eax, [ebp+var_8]
pop ecx
loc_10000457: ; CODE XREF: sub_10000398+46j
pop ebx
loc_10000458: ; CODE XREF: sub_10000398+2Cj
pop edi
pop esi
leave
retn
sub_10000398 endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
; Attributes: bp-based frame
sub_1000045C proc near ; CODE XREF: sub_100002BD+4Ap
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 0Ch
lea eax, [ebp+var_4]
push ebx
push eax
mov eax, [ebp+arg_4]
call sub_10000398
xor ebx, ebx
cmp eax, ebx
pop ecx
jl loc_10000533
cmp off_10000968, ebx
mov [ebp+var_C], 8000000Eh
jz loc_10000524
mov eax, offset off_10000968
push esi
mov [ebp+var_8], eax
push edi
loc_10000497: ; CODE XREF: sub_1000045C+A7j
mov esi, [eax]
mov eax, [ebp+var_4]
call sub_100005CF
mov edx, eax
mov eax, esi
call sub_100005CF
lea eax, [edx+eax-2]
push eax
call sub_10000602
mov edi, eax
cmp edi, ebx
pop ecx
jz short loc_100004F8
mov ecx, [ebp+var_4]
mov edx, edi
call sub_100005BA
xor eax, eax
cmp [edi], bx
mov ecx, edi
jz short loc_100004D6
loc_100004CE: ; CODE XREF: sub_1000045C+78j
inc ecx
inc ecx
inc eax
cmp [ecx], bx
jnz short loc_100004CE
loc_100004D6: ; CODE XREF: sub_1000045C+70j
lea edx, [edi+eax*2]
mov ecx, esi
call sub_100005BA
mov eax, [ebp+arg_4]
push edi
call sub_1000058B
test al, al
pop ecx
jnz short loc_10000507
mov eax, dword_100009D8
push edi
call dword ptr [eax+30h]
pop ecx
loc_100004F8: ; CODE XREF: sub_1000045C+5Dj
mov eax, [ebp+var_8]
add eax, 4
cmp [eax], ebx
mov [ebp+var_8], eax
jnz short loc_10000497
jmp short loc_10000522
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_10000507: ; CODE XREF: sub_1000045C+90j
push [ebp+arg_0]
call sub_10000711
mov ecx, [ebp+arg_8]
mov [ecx], eax
mov eax, dword_100009D8
push edi
mov [ebp+var_C], ebx
call dword ptr [eax+30h]
pop ecx
pop ecx
loc_10000522: ; CODE XREF: sub_1000045C+A9j
pop edi
pop esi
loc_10000524: ; CODE XREF: sub_1000045C+2Bj
push [ebp+var_4]
mov eax, dword_100009D8
call dword ptr [eax+30h]
mov eax, [ebp+var_C]
pop ecx
loc_10000533: ; CODE XREF: sub_1000045C+18j
pop ebx
leave
retn
sub_1000045C endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
sub_10000536 proc near ; CODE XREF: sub_100002BD+5Fp
arg_0 = dword ptr 0Ch
arg_4 = dword ptr 10h
arg_8 = dword ptr 14h
push ebx
push edi
xor edi, edi
cmp off_10000970, edi
mov ebx, 8000000Eh
jz short loc_10000586
mov eax, offset off_10000970
push esi
mov esi, eax
loc_1000054F: ; CODE XREF: sub_10000536+32j
push dword ptr [eax]
mov eax, [esp+8+arg_4]
call sub_1000058B
test al, al
pop ecx
jnz short loc_1000056C
add esi, 4
inc edi
cmp dword ptr [esi], 0
mov eax, esi
jnz short loc_1000054F
jmp short loc_10000585
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_1000056C: ; CODE XREF: sub_10000536+27j
push [esp+4+arg_0]
mov edi, off_10000970[edi*4]
call sub_10000711
pop ecx
mov ecx, [esp+4+arg_8]
mov [ecx], eax
xor ebx, ebx
loc_10000585: ; CODE XREF: sub_10000536+34j
pop esi
loc_10000586: ; CODE XREF: sub_10000536+Fj
pop edi
mov eax, ebx
pop ebx
retn
sub_10000536 endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
; Attributes: bp-based frame
sub_1000058B proc near ; CODE XREF: sub_1000045C+88p
; sub_10000536+1Fp
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
xor ecx, ecx
push ecx
push ecx
push ecx
push 1
push [ebp+arg_0]
lea ecx, [ebp+var_4]
push ecx
push eax
xor bl, bl
call dword ptr [eax+8]
add esp, 1Ch
test eax, eax
jl short loc_100005B5
mov eax, [ebp+var_4]
push eax
call dword ptr [eax+0Ch]
pop ecx
inc bl
loc_100005B5: ; CODE XREF: sub_1000058B+1Ej
mov al, bl
pop ebx
leave
retn
sub_1000058B endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
sub_100005BA proc near ; CODE XREF: sub_10000398+9Fp
; sub_1000045C+64p ...
jmp short loc_100005C3
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_100005BC: ; CODE XREF: sub_100005BA+Fj
mov [edx], ax
inc edx
inc edx
inc ecx
inc ecx
loc_100005C3: ; CODE XREF: sub_100005BAj
mov ax, [ecx]
test ax, ax
jnz short loc_100005BC
and [edx], ax
retn
sub_100005BA endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
sub_100005CF proc near ; CODE XREF: sub_10000398+89p
; sub_1000045C+40p ...
xor ecx, ecx
jmp short loc_100005D6
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_100005D3: ; CODE XREF: sub_100005CF+Bj
inc eax
inc eax
inc ecx
loc_100005D6: ; CODE XREF: sub_100005CF+2j
cmp word ptr [eax], 0
jnz short loc_100005D3
lea eax, [ecx+ecx+2]
retn
sub_100005CF endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
; Attributes: bp-based frame
sub_100005E1 proc near ; CODE XREF: sub_10000398+8Fp
; sub_10000602+5p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
mov eax, dword_100009D8
push 4
call dword ptr [eax+2Ch]
mov eax, [ebp+var_4]
add esp, 0Ch
leave
retn
sub_100005E1 endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
sub_10000602 proc near ; CODE XREF: sub_10000326+31p
; sub_10000398+35p ...
arg_0 = dword ptr 8
push esi
push [esp+arg_0]
call sub_100005E1
mov esi, eax
test esi, esi
pop ecx
jz short loc_10000628
mov eax, dword_100009D8
push 0
push [esp+4+arg_0]
push esi
call dword ptr [eax+0C0h]
add esp, 0Ch
loc_10000628: ; CODE XREF: sub_10000602+Fj
mov eax, esi
pop esi
retn
sub_10000602 endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
; Attributes: bp-based frame
sub_1000062C proc near ; CODE XREF: sub_10000693+14p
; sub_100006AF+37p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push [ebp+arg_0]
mov eax, dword_100009D8
push 4
call dword ptr [eax+2Ch]
add esp, 0Ch
cmp [ebp+var_4], 0
jz short loc_10000665
push [ebp+arg_0]
mov eax, dword_100009D8
push [ebp+arg_4]
push [ebp+var_4]
call dword ptr [eax+0BCh]
add esp, 0Ch
loc_10000665: ; CODE XREF: sub_1000062C+20j
mov eax, [ebp+var_4]
leave
retn
sub_1000062C endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
sub_1000066A proc near ; CODE XREF: sub_10000693+6p
; sub_100006AF+1Fp ...
test eax, eax
jnz short loc_1000066F
retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_1000066F: ; CODE XREF: sub_1000066A+2j
mov ecx, eax
loc_10000671: ; CODE XREF: sub_1000066A+21j
mov dl, [eax]
and dl, 7Fh
cmp dl, 7Fh
jnz short loc_10000681
cmp byte ptr [eax+1], 0FFh
jz short loc_1000068D
loc_10000681: ; CODE XREF: sub_1000066A+Fj
xor edx, edx
mov dh, [eax+3]
mov dl, [eax+2]
add eax, edx
jmp short loc_10000671
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_1000068D: ; CODE XREF: sub_1000066A+15j
sub eax, ecx
add eax, 4
retn
sub_1000066A endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
sub_10000693 proc near ; CODE XREF: sub_10000326+57p
; sub_100006AF:loc_100006C3p
test esi, esi
jz short loc_100006A2
mov eax, esi
call sub_1000066A
test eax, eax
jnz short loc_100006A5
loc_100006A2: ; CODE XREF: sub_10000693+2j
xor eax, eax
retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_100006A5: ; CODE XREF: sub_10000693+Dj
push esi
push eax
call sub_1000062C
pop ecx
pop ecx
retn
sub_10000693 endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
sub_100006AF proc near ; CODE XREF: sub_10000711+97p
arg_0 = dword ptr 8
push esi
mov esi, eax
test esi, esi
jnz short loc_100006BC
mov esi, [esp+arg_0]
jmp short loc_100006C3
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_100006BC: ; CODE XREF: sub_100006AF+5j
cmp [esp+arg_0], 0
jnz short loc_100006CA
loc_100006C3: ; CODE XREF: sub_100006AF+Bj
call sub_10000693
pop esi
retn
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
loc_100006CA: ; CODE XREF: sub_100006AF+12j
push ebx
push edi
mov eax, esi
call sub_1000066A
mov edi, eax
mov eax, [esp+8+arg_0]
call sub_1000066A
mov ebx, eax
lea eax, [ebx+edi-4]
push esi
push eax
call sub_1000062C
mov esi, eax
test esi, esi
pop ecx
pop ecx
jz short loc_1000070B
push ebx
push [esp+0Ch+arg_0]
lea eax, [esi+edi-4]
push eax
mov eax, dword_100009D8
call dword ptr [eax+0BCh]
add esp, 0Ch
loc_1000070B: ; CODE XREF: sub_100006AF+42j
pop edi
pop ebx
mov eax, esi
pop esi
retn
sub_100006AF endp
; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
; Attributes: bp-based frame
sub_10000711 proc near ; CODE XREF: sub_1000045C+AEp
; sub_10000536+41p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ecx
xor eax, eax
cmp [edi], ax
jz short loc_10000725
loc_1000071D: ; CODE XREF: sub_10000711+12j
inc eax
cmp word ptr [edi+eax*2], 0
jnz short loc_1000071D
loc_10000725: ; CODE XREF: sub_10000711+Aj
push ebx
lea ebx, [eax+eax+2]
lea eax, [ebx+8]
push esi
push eax
call sub_10000602
and [ebp+var_4], 0
mov esi, eax
test esi, esi
pop ecx
jz short loc_100007BC
mov al, bl
add al, 4
mov [esi+2], al
lea eax, [ebx+4]
shr eax, 8
mov [esi+3], al
push ebx
lea eax, [esi+4]
push edi
push eax
mov eax, dword_100009D8
mov byte ptr [esi], 4
mov byte ptr [esi+1], 4
call dword ptr [eax+0BCh]
xor eax, eax
mov ah, [esi+3]
add esp, 0Ch
mov [ebp+var_4], esi
mov al, [esi+2]
add eax, esi
cmp [ebp+arg_0], 0
mov byte ptr [eax], 7Fh
mov byte ptr [eax+1], 0FFh
mov byte ptr [eax+2], 4
mov byte ptr [eax+3], 0
jz short loc_100007BC
and [ebp+var_8], 0
lea eax, [ebp+var_8]
push eax
mov eax, dword_100009D8
push offset unk_100009C4
push [ebp+arg_0]
call dword ptr [eax+58h]
mov eax, [ebp+var_8]
push esi
call sub_100006AF
mov [ebp+var_4], eax
mov eax, dword_100009D8
push esi
call dword ptr [eax+30h]
add esp, 14h
loc_100007BC: ; CODE XREF: sub_10000711+2Cj
; sub_10000711+79j
mov eax, [ebp+var_4]
pop esi
pop ebx
leave
retn
sub_10000711 endp
; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
align 20h
_text ends
; Section 2. (virtual address 000007E0)
; Virtual size : 00000165 ( 357.)
; Section size in file : 00000180 ( 384.)
; Offset to raw data for section: 000007E0
; Flags 40000040: Data Readable
; Alignment : default
; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
; Segment type: Pure data
; Segment permissions: Read
_rdata segment para public 'DATA' use32
assume cs:_rdata
;org 100007E0h
db 0
db 0
db 0
db 0
db 31h ; 1
db 0CFh ; Ï
db 0BEh ; ¾
db 43h ; C
db 0
db 0
db 0
db 0
db 2
db 0
db 0
db 0
db 85h ; …
db 0
db 0
db 0
db 0C0h ; À
db 8
db 0
db 0
db 0C0h ; À
db 8
db 0
db 0
aEfiBootBoot_ef: ; DATA XREF: .data:10000978o
unicode 0, <\EFI\BOOT\BOOT.efi>,0
db 0
db 0
aEfiBootAppleIa: ; DATA XREF: .data:10000974o
unicode 0, <\EFI\BOOT\APPLE\IA32\BOOT.efi>,0
aSystemLibraryC: ; DATA XREF: .data:off_10000970o
unicode 0, <\System\Library\CoreServices\boot.efi>,0
aBoot_efi: ; DATA XREF: .data:off_10000968o
; .data:1000097Co
unicode 0, <\boot.efi>,0
db 52h ; R
db 53h ; S
db 44h ; D
db 53h ; S
db 0B0h ; °
db 83h ; ƒ
db 0EDh ; í
db 0F3h ; ó
db 0BFh ; ¿
db 26h ; &
db 0B1h ; ±
db 43h ; C
db 97h ; —
db 4Eh ; N
db 6Ah ; j
db 1Ah
db 0D1h ; Ñ
db 0C8h ; È
db 0CBh ; Ë
db 0B7h ; ·
db 1
db 0
db 0
db 0
db 43h ; C
db 3Ah ; :
db 5Ch ; \
db 62h ; b
db 75h ; u
db 69h ; i
db 6Ch ; l
db 64h ; d
db 74h ; t
db 6Fh ; o
db 6Fh ; o
db 6Ch ; l
db 73h ; s
db 5Ch ; \
db 66h ; f
db 77h ; w
db 61h ; a
db 72h ; r
db 65h ; e
db 5Ch ; \
db 6Dh ; m
db 33h ; 3
db 38h ; 8
db 6Dh ; m
db 61h ; a
db 69h ; i
db 6Eh ; n
db 2Eh ; .
db 70h ; p
db 72h ; r
db 6Fh ; o
db 6Ah ; j
db 5Ch ; \
db 70h ; p
db 72h ; r
db 6Fh ; o
db 6Ah ; j
db 65h ; e
db 63h ; c
db 74h ; t
db 66h ; f
db 69h ; i
db 6Ch ; l
db 65h ; e
db 73h ; s
db 5Ch ; \
db 73h ; s
db 61h ; a
db 6Eh ; n
db 64h ; d
db 62h ; b
db 6Fh ; o
db 78h ; x
db 5Ch ; \
db 50h ; P
db 6Ch ; l
db 61h ; a
db 74h ; t
db 66h ; f
db 6Fh ; o
db 72h ; r
db 6Dh ; m
db 5Ch ; \
db 49h ; I
db 6Eh ; n
db 74h ; t
db 65h ; e
db 6Ch ; l
db 4Dh ; M
db 70h ; p
db 67h ; g
db 5Ch ; \
db 4Dh ; M
db 33h ; 3
db 38h ; 8
db 5Ch ; \
db 52h ; R
db 65h ; e
db 6Ch ; l
db 65h ; e
db 61h ; a
db 73h ; s
db 65h ; e
db 5Ch ; \
db 49h ; I
db 41h ; A
db 33h ; 3
db 32h ; 2
db 5Ch ; \
db 41h ; A
db 70h ; p
db 70h ; p
db 6Ch ; l
db 65h ; e
db 42h ; B
db 6Fh ; o
db 6Fh ; o
db 74h ; t
db 50h ; P
db 6Fh ; o
db 6Ch ; l
db 69h ; i
db 63h ; c
db 79h ; y
db 2Eh ; .
db 70h ; p
db 64h ; d
db 62h ; b
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
db 0
_rdata ends
; Section 3. (virtual address 00000960)
; Virtual size : 00000084 ( 132.)
; Section size in file : 000000A0 ( 160.)
; Offset to raw data for section: 00000960
; Flags C0000040: Data Readable Writable
; Alignment : default
; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
; Segment type: Pure data
; Segment permissions: Read/Write
_data segment para public 'DATA' use32
assume cs:_data
;org 10000960h
unk_10000960 db 1 ; DATA XREF: DllEntryPoint+43o
db 0
db 0
db 0
dd offset sub_100002BD
off_10000968 dd offset aBoot_efi ; DATA XREF: sub_1000045C+1Er
; sub_1000045C+31o
; "\\boot.efi"
align 10h
off_10000970 dd offset aSystemLibraryC ; DATA XREF: sub_10000536+4r
; sub_10000536+11o ...
; "\\System\\Library\\CoreServices\\boot.efi"
dd offset aEfiBootAppleIa ; "\\EFI\\BOOT\\APPLE\\IA32\\BOOT.efi"
dd offset aEfiBootBoot_ef ; "\\EFI\\BOOT\\BOOT.efi"
dd offset aBoot_efi ; "\\boot.efi"
db 0
db 0
db 0
db 0
unk_10000984 db 2Dh ; - ; DATA XREF: sub_10000398+13o
db 0F0h ; ð
db 0D1h ; Ñ
db 7Bh ; {
db 2Fh ; /
db 9Ch ; œ
db 81h ;
db 45h ; E
db 0BFh ; ¿
db 12h
db 0D5h ; Õ
db 4Ah ; J
db 0BAh ; º
db 0Dh
db 98h ; ˜
db 0D6h ; Ö
unk_10000994 db 58h ; X ; DATA XREF: DllEntryPoint+20o
db 77h ; w
db 25h ; %
db 62h ; b
db 0Ch
db 35h ; 5
db 0Ah
db 4Dh ; M
db 0B0h ; °
db 0BDh ; ½
db 0F6h ; ö
db 0BEh ; ¾
db 2Eh ; .
db 1Eh
db 27h ; '
db 2Ch ; ,
unk_100009A4 db 14h ; DATA XREF: sub_10000326+12o
db 48h ; H
db 7Eh ; ~
db 0CAh ; Ê
db 0DCh ; Ü
db 2Ah ; *
db 0DDh ; Ý
db 4Ah ; J
db 0ABh ; «
db 0FFh
db 73h ; s
db 4Eh ; N
db 3Ch ; <
db 0FEh ; þ
db 13h
db 0F3h ; ó
unk_100009B4 db 22h ; " ; DATA XREF: sub_100002BD+Eo
db 5Bh ; [
db 4Eh ; N
db 96h ; –
db 59h ; Y
db 64h ; d
db 0D2h ; Ò
db 11h
db 8Eh ; Ž
db 39h ; 9
db 0
db 0A0h ;
db 0C9h ; É
db 69h ; i
db 72h ; r
db 3Bh ; ;
unk_100009C4 db 91h ; ‘ ; DATA XREF: sub_10000711+88o
db 6Eh ; n
db 57h ; W
db 9
db 3Fh ; ?
db 6Dh ; m
db 0D2h ; Ò
db 11h
db 8Eh ; Ž
db 39h ; 9
db 0
db 0A0h ;
db 0C9h ; É
db 69h ; i
db 72h ; r
db 3Bh ; ;
dword_100009D4 dd 0 ; DATA XREF: DllEntryPoint+Aw
dword_100009D8 dd 0 ; DATA XREF: DllEntryPoint+26w
; DllEntryPoint+4Fr ...
dword_100009DC dd 0 ; DATA XREF: DllEntryPoint+14w
align 40h
_data ends
end DllEntryPoint