All pastes #440398 Raw Edit

Superhai

public text v1 · immutable
·published 2007-04-15 00:34 UTC
rendered paste body


;
; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
; º	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	; &#8230;
		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	; &#402;
		db 0EDh	; í
		db 0F3h	; ó
		db 0BFh	; ¿
		db  26h	; &
		db 0B1h	; ±
		db  43h	; C
		db  97h	; &#8212;
		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	; &#339;
		db  81h	; 
		db  45h	; E
		db 0BFh	; ¿
		db  12h
		db 0D5h	; Õ
		db  4Ah	; J
		db 0BAh	; º
		db  0Dh
		db  98h	; &#732;
		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	; &#8211;
		db  59h	; Y
		db  64h	; d
		db 0D2h	; Ò
		db  11h
		db  8Eh	; &#381;
		db  39h	; 9
		db    0
		db 0A0h	;  
		db 0C9h	; É
		db  69h	; i
		db  72h	; r
		db  3Bh	; ;
unk_100009C4	db  91h	; &#8216;		; DATA XREF: sub_10000711+88o
		db  6Eh	; n
		db  57h	; W
		db    9
		db  3Fh	; ?
		db  6Dh	; m
		db 0D2h	; Ò
		db  11h
		db  8Eh	; &#381;
		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