Function at 0x488530
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x54
mov eax, dword [esp + 0x58]
push ebx
push ebp
push esi
mov ecx, dword [eax + 0x20]
mov ebp, dword [eax]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x68]
push edi
mov edi, dword [ebp + 8]
lea esi, [ecx + ecx*4]
xor edx, edx
mov dword [esp + 0x38], edx
mov dword [esp + 0x18], edi
lea ecx, [ecx + esi*2]
lea ebx, [eax + ecx*8 + 0x38]
mov eax, dword [eax + 4]
xor ecx, ecx
mov cl, byte [ebx + 0x34]
lea ecx, [ecx + ecx*8]
lea eax, [eax + ecx*8 + 8]
mov dword [esp + 0x34], eax
mov ecx, dword [eax + 0x2c]
mov eax, dword [ebx]
mov esi, eax
mov dword [esp + 0x10], ecx
shr esi, 0x18
and esi, 1
test eax, 0x400000
mov dword [esp + 0x30], esi
je 0x48859e
mov al, byte [esp + 0x70]
mov dword [esp + 0x50], 1
test al, 0x20
je 0x4885a2
mov dword [esp + 0x50], edx
push edi
call fcn.0046cec0
push edi
mov dword [esp + 0x34], eax
mov dword [ebx + 0x28], eax
mov dword [ebx + 0x24], eax
call fcn.0046cec0
mov dword [esp + 0x4c], eax
mov dword [ebx + 0x2c], eax
mov al, byte [ebx + 0x34]
add esp, 8
test al, al
jbe 0x4885ed
mov edx, dword [esp + 0x34]
test byte [edx + 0x20], 8
je 0x4885ed
mov edx, dword [ebp + 0x4c]
inc edx
mov eax, edx
mov dword [ebp + 0x4c], edx
push eax
push 0
push 7
push edi
mov dword [ebx + 0x18], eax
call fcn.0046c410
add esp, 0x10
mov eax, dword [esp + 0x34]
test byte [eax + 0x24], 4
je 0x48862f
mov ecx, dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
dec ecx
push esi
push ecx
push 7
push edi
call fcn.0046c410
push esi
push 4
push edi
call fcn.0046cea0
mov edx, dword [esp + 0x48]
inc esi
push edx
push esi
push 0x1b
push edi
mov dword [ebx + 0x3c], eax
call fcn.0046c410
add esp, 0x2c
mov byte [ebx + 0x35], 1
jmp 0x4893b8
mov eax, dword [ebx]
test eax, 0x8000000
je 0x4887dc
mov eax, dword [ebx + 0x10]
push ebp
mov dword [esp + 0x60], eax
mov esi, dword [eax]
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 4]
mov dword [esp + 0x38], esi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], edx
call fcn.0046f090
lea eax, [esi + 2]
push eax
push ebp
mov dword [esp + 0x64], eax
call fcn.0046fa10
add esp, 0xc
cmp esi, 1
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], 1
jl 0x4886ea
mov ecx, dword [esp + 0x34]
xor esi, esi
test ecx, ecx
jle 0x4886d5
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x70]
cmp dword [eax], edx
je 0x48869f
inc esi
add eax, 8
cmp esi, ecx
jl 0x488691
jmp 0x4886d5
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x6c]
lea edx, [eax + ecx + 1]
mov ecx, dword [esp + 0x40]
lea eax, [esi + esi*2]
push edx
mov eax, dword [ecx + eax*4 + 8]
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0x20]
mov edx, dword [ecx + edx*8]
mov eax, dword [edx + 0xc]
push eax
push ebp
call fcn.0046d170
mov ecx, dword [esp + 0x40]
add esp, 0xc
cmp esi, ecx
je 0x4886ea
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x34]
inc eax
cmp eax, ecx
mov dword [esp + 0x70], eax
jle 0x48867f
mov esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x6c]
push ecx
mov edx, dword [esi + 0x14]
push edx
push 7
push edi
call fcn.0046c410
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
inc eax
dec ecx
push eax
push ecx
push 7
push edi
call fcn.0046c410
mov edx, dword [esi + 0x1c]
mov eax, dword [esi + 0x18]
neg edx
mov ecx, dword [esp + 0x8c]
sbb edx, edx
and edx, 0xfffffff7
add edx, 0xfffffffe
push edx
mov edx, dword [esp + 0x50]
push eax
mov eax, dword [esp + 0x38]
push ecx
push edx
push eax
push 0x88
push edi
call fcn.0046ba30
mov eax, dword [esp + 0x70]
add esp, 0x3c
test eax, eax
mov dword [esi + 0x1c], 0
jle 0x4887a8
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
add edx, 4
mov dword [esp + 0x40], eax
lea esi, [ecx + 8]
mov dword [esp + 0x70], edx
mov eax, dword [esp + 0x70]
cmp byte [eax], 0
je 0x48878f
mov eax, dword [esi]
mov edx, dword [esp + 0x14]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x20]
lea ecx, [eax + ecx*8]
push ecx
push ebx
call fcn.00489640
add esp, 8
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x40]
add edx, 8
add esi, 0xc
dec eax
mov dword [esp + 0x70], edx
mov dword [esp + 0x40], eax
jne 0x48876d
mov edx, dword [esp + 0x10]
push edi
mov byte [ebx + 0x35], 0x8a
mov dword [ebx + 0x38], edx
call fcn.0046cf30
mov ecx, dword [esp + 0x70]
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x5c]
push eax
push ecx
push ebp
call fcn.0046fa40
push 1
push ebp
call fcn.0046f0a0
add esp, 0x18
jmp 0x4893b8
test ah, 0x10
je 0x488858
push ebp
call fcn.0046c450
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x14]
mov esi, eax
mov eax, dword [esp + 0x78]
push 0
push 3
push edx
mov edx, dword [esp + 0x24]
push eax
push 0xffffffffffffffff
push ecx
push edx
mov dword [esp + 0x58], esi
call fcn.004862c0
push esi
push ebx
push eax
push ebp
call fcn.00489710
mov esi, eax
mov eax, dword [ebx + 0x28]
push eax
push esi
push 0x15
push edi
mov dword [esp + 0x68], eax
call fcn.0046c410
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x50]
add esp, 0x40
push esi
push eax
push ecx
push 0x36
push edi
call fcn.0046ba70
mov edx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push edx
push ebp
call fcn.0046f190
add esp, 0x24
mov byte [ebx + 0x35], 0x95
jmp 0x4893b8
test ah, 0x20
je 0x488a72
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x10]
push 0
push 0x24
push eax
mov eax, dword [esp + 0x20]
push ecx
push 0xffffffffffffffff
push edx
push eax
mov dword [esp + 0x4c], 0x95
mov dword [esp + 0x5c], 0
call fcn.004862c0
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x90]
push 0
push 0x18
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x3c]
push edx
push 0xffffffffffffffff
push eax
push ecx
call fcn.004862c0
add esp, 0x38
mov dword [esp + 0x6c], eax
test esi, esi
je 0x4888d7
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x70], edx
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x70]
test eax, eax
je 0x48895a
mov eax, dword [eax]
lea ecx, [esp + 0x54]
push ecx
mov byte [esp + 0x38], 0x31
mov edx, dword [eax + 0xc]
mov byte [esp + 0x39], 0x2f
push edx
push ebp
mov byte [esp + 0x42], 0x2e
mov byte [esp + 0x43], 0x30
mov dword [esp + 0x68], eax
call fcn.0046f2e0
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x64], eax
push eax
mov eax, dword [esp + 0x3c]
push eax
mov eax, dword [esp + 0x70]
xor edx, edx
push ecx
mov dl, byte [eax]
xor ecx, ecx
mov cl, byte [esp + edx - 1]
push ecx
push edi
call fcn.0046ba70
mov edx, dword [esp + 0x78]
push 1
push edx
push ebp
call fcn.0046f2c0
mov eax, dword [esp + 0x80]
push eax
push ebp
call fcn.0046c480
mov ecx, dword [esp + 0xa4]
push ecx
push ebx
call fcn.00489640
add esp, 0x3c
jmp 0x48897a
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
mov ecx, esi
push edx
neg ecx
sbb ecx, ecx
push eax
and ecx, 0xfffffffb
add ecx, 0x48
push ecx
push edi
call fcn.0046c410
add esp, 0x10
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x4889dc
mov ecx, dword [ebp + 0x4c]
mov edx, eax
inc ecx
mov eax, dword [edx]
mov dword [ebp + 0x4c], ecx
mov dword [esp + 0x5c], eax
push ecx
mov eax, dword [eax + 0xc]
mov dword [esp + 0x44], ecx
push eax
push ebp
call fcn.0046d170
mov ecx, dword [esp + 0x68]
add esp, 0xc
mov al, byte [ecx]
cmp al, 0x4f
je 0x4889bf
cmp al, 0x4d
je 0x4889bf
mov eax, esi
neg eax
sbb eax, eax
and eax, 2
add eax, 0x4d
jmp 0x4889ca
mov eax, esi
neg eax
sbb eax, eax
and al, 0xfe
add eax, 0x50
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x30], eax
push edx
push ebx
call fcn.00489640
add esp, 8
push edi
call fcn.0046cf30
mov ecx, esi
mov edx, dword [esp + 0x14]
add esp, 4
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x70]
mov dword [ebx + 0x38], edx
neg ecx
sbb cl, cl
and cl, 0xfd
add cl, 0x5f
test eax, eax
mov byte [ebx + 0x35], cl
jne 0x488a12
mov eax, dword [esp + 0x6c]
test eax, eax
jne 0x488a12
mov byte [ebx + 0x36], 1
cmp dword [esp + 0x30], 0x95
je 0x4893b8
push ebp
call fcn.0046c450
mov edi, dword [esp + 0x1c]
mov esi, eax
mov eax, dword [esp + 0x14]
push esi
push eax
push 0x41
push edi
mov dword [esp + 0x4c], esi
call fcn.0046c410
mov ecx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push ecx
push ebp
call fcn.0046f190
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x54]
push esi
push edx
push eax
push ecx
push edi
call fcn.0046ba70
push 0x6b
push edi
call fcn.0046c940
add esp, 0x40
jmp 0x4893b8
test eax, 0x30000
je 0x488f4f
mov edx, dword [ebx + 0x10]
mov ecx, dword [ebx + 0x20]
xor esi, esi
mov dword [esp + 0x34], ecx
mov si, word [ebx + 4]
mov ecx, dword [edx + 0x24]
xor eax, eax
cmp esi, ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x24], edx
jne 0x488ab0
mov dword [esp + 0x28], 0xffffffff
jmp 0x488aba
mov edx, dword [edx + 4]
mov edx, dword [edx + esi*4]
mov dword [esp + 0x28], edx
test byte [esp + 0x70], 1
je 0x488ad6
test dword [ebx], 0x800000
je 0x488ad6
cmp ecx, esi
jle 0x488ad6
mov eax, 1
mov dword [esp + 0x48], eax
test dword [ebx], 0x100000
je 0x488b12
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x74]
push eax
mov eax, dword [esp + 0x2c]
push 0x18
push ecx
mov ecx, dword [esp + 0x1c]
push edx
mov edx, dword [esp + 0x24]
push eax
push ecx
push edx
call fcn.004862c0
mov dword [esp + 0x88], eax
add esp, 0x1c
mov eax, 1
test dword [ebx], 0x200000
je 0x488b4b
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x74]
push eax
mov eax, dword [esp + 0x2c]
push 0x24
push ecx
mov ecx, dword [esp + 0x1c]
push edx
mov edx, dword [esp + 0x24]
push eax
push ecx
push edx
call fcn.004862c0
mov dword [esp + 0x48], eax
add esp, 0x1c
mov eax, 1
mov edx, dword [esp + 0x78]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x7c]
push edx
push eax
push ecx
push ebx
push ebp
call fcn.00489830
mov edx, dword [esp + 0x38]
mov dword [esp + 0x8c], eax
mov eax, dword [ebp]
push edx
push eax
call fcn.00451280
mov edx, dword [esp + 0x48]
mov ecx, dword [ebx + 0x28]
mov dword [esp + 0x44], eax
add esp, 0x24
mov eax, dword [edx + 0x24]
mov dword [esp + 0x28], ecx
cmp esi, eax
jge 0x488baa
mov ecx, edx
mov edx, dword [ecx + 0x1c]
xor ecx, ecx
cmp byte [edx + esi], cl
mov edx, dword [esp + 0x30]
sete cl
cmp edx, ecx
je 0x488bb6
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x488bc8
cmp eax, esi
jne 0x488bc8
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x2c], eax
jmp 0x488bd0
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x488be9
test byte [eax + 0x10], 0x28
jne 0x488be9
mov dword [esp + 0x3c], 0
mov edx, 1
jmp 0x488bf2
mov edx, 1
mov dword [esp + 0x3c], edx
test ecx, ecx
je 0x488c04
test byte [ecx + 0x10], 0x28
mov dword [esp + 0x4c], 0
je 0x488c08
mov dword [esp + 0x4c], edx
test eax, eax
jne 0x488c14
test esi, esi
mov dword [esp + 0x40], eax
jle 0x488c18
mov dword [esp + 0x40], edx
test eax, eax
mov dword [esp + 0x24], esi
je 0x488ca7
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x70]
add ecx, esi
mov eax, dword [edx]
push ecx
mov eax, dword [eax + 0xc]
push eax
push ebp
mov dword [esp + 0x30], eax
call fcn.0046d170
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
add eax, esi
push edx
push eax
push ecx
push edi
call fcn.004894f0
mov eax, dword [esp + 0x38]
add esp, 0x1c
test eax, eax
je 0x488c9e
mov dl, byte [eax + esi]
mov eax, dword [esp + 0x24]
push edx
push eax
call fcn.0046dfc0
add esp, 8
cmp al, 0x62
jne 0x488c7d
mov ecx, dword [esp + 0x1c]
mov byte [ecx + esi], al
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov al, byte [edx + esi]
push eax
push ecx
call fcn.00489560
add esp, 8
test eax, eax
je 0x488c9e
mov edx, dword [esp + 0x1c]
mov byte [edx + esi], 0x62
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x488cda
mov eax, dword [esp + 0x48]
test eax, eax
je 0x488cda
mov ecx, dword [esp + 0x70]
add ecx, esi
push ecx
push 0
push 0xa
push edi
call fcn.0046c410
lea edx, [esi + 1]
add esp, 0x10
mov dword [esp + 0x24], edx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x70]
push eax
push ecx
push edx
push ebp
call fcn.004896a0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x48]
push ecx
mov ecx, dword [esp + 0x54]
push edx
mov edx, dword [esp + 0x5c]
push eax
lea eax, [ecx + edx*2]
mov edx, dword [esp + 0x50]
xor ecx, ecx
mov cl, byte [edx + eax*2 + 0x4eeb08]
push ecx
push edi
call fcn.0046ea30
mov eax, dword [esp + 0x94]
add esp, 0x28
test eax, eax
mov dword [esp + 0x24], esi
je 0x488de8
mov ecx, dword [eax]
mov eax, dword [esp + 0x70]
add eax, esi
push 1
mov edx, dword [ecx + 0xc]
push eax
push ebp
mov dword [esp + 0x30], edx
call fcn.0046f000
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x30]
lea eax, [ecx + esi]
push eax
push edx
push ebp
call fcn.0046d170
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x3c]
push eax
lea eax, [ecx + esi]
push eax
push edx
push edi
call fcn.004894f0
mov eax, dword [esp + 0x48]
add esp, 0x28
test eax, eax
je 0x488dca
mov cl, byte [eax + esi]
mov edx, dword [esp + 0x24]
push ecx
push edx
call fcn.0046dfc0
add esp, 8
cmp al, 0x62
jne 0x488da9
mov eax, dword [esp + 0x20]
mov byte [eax + esi], 0x62
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov dl, byte [ecx + esi]
push edx
push eax
call fcn.00489560
add esp, 8
test eax, eax
je 0x488dca
mov ecx, dword [esp + 0x20]
mov byte [ecx + esi], 0x62
mov edx, dword [esp + 0x20]
lea eax, [esi + 1]
push edx
push eax
mov eax, dword [esp + 0x78]
push eax
push ebp
call fcn.004896a0
lea eax, [esi + 1]
add esp, 0x10
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x1c]
mov edx, dword [ebp]
push ecx
push edx
call fcn.0043f7f0
mov eax, dword [esp + 0x28]
mov ecx, dword [ebp]
push eax
push ecx
call fcn.0043f7f0
push edi
call fcn.0046cf30
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x80]
add esp, 0x14
test eax, eax
jne 0x488e23
test esi, esi
jne 0x488e23
xor eax, eax
jmp 0x488e28
mov eax, 1
mov edx, dword [esp + 0x30]
inc edx
imul edx, eax
xor eax, eax
mov al, byte [edx + 0x4eeb10]
cmp eax, 0x95
je 0x488e71
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x70]
push ecx
mov ecx, dword [esp + 0x2c]
push edx
mov edx, dword [esp + 0x3c]
push ecx
push edx
push eax
push edi
call fcn.0046ea30
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x64]
cmp ecx, eax
setne cl
push ecx
push edi
call fcn.0046c940
add esp, 0x20
push ebp
call fcn.0046c450
mov dword [esp + 0x74], eax
mov eax, dword [ebx]
add esp, 4
test eax, 0x300000
je 0x488eb2
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x34]
push edx
push esi
push eax
push 0x1d
push edi
call fcn.0046ba70
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x84]
push ecx
push edx
push 0x49
push edi
call fcn.0046c410
add esp, 0x24
mov eax, dword [esp + 0x70]
push eax
push ebp
call fcn.0046c480
mov ecx, dword [esp + 0x34]
push ecx
push ebx
call fcn.00489640
mov edx, dword [esp + 0x7c]
push edx
push ebx
call fcn.00489640
mov eax, dword [esp + 0x68]
add esp, 0x18
test eax, eax
jne 0x488f17
push ebp
call fcn.0046c450
mov esi, eax
mov eax, dword [esp + 0x38]
push esi
push eax
push 0x63
push edi
mov dword [esp + 0x4c], esi
call fcn.0046c410
mov ecx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push ecx
push ebp
call fcn.0046f190
mov edx, dword [esp + 0x34]
push esi
push edx
push 0x32
push edi
call fcn.0046c410
add esp, 0x34
mov eax, dword [ebx]
test eax, 0x2000000
je 0x488f26
mov byte [ebx + 0x35], 0x95
jmp 0x488f38
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x488f34
mov byte [ebx + 0x35], 0x5c
jmp 0x488f38
mov byte [ebx + 0x35], 0x5f
mov ecx, dword [esp + 0x34]
test eax, 0x80000000
mov dword [ebx + 0x38], ecx
je 0x4893b8
jmp 0x4893b4
test eax, 0x10000000
je 0x489388
mov eax, dword [ebp + 0x48]
mov ecx, dword [ebp + 0x4c]
xor esi, esi
mov dword [esp + 0x54], eax
inc eax
inc ecx
mov edx, ecx
push edi
mov dword [esp + 0x2c], esi
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x4c], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], esi
call fcn.0046cec0
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x5c], eax
mov eax, dword [ebx + 0x10]
add esp, 4
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], esi
mov eax, dword [eax + 0xc]
mov dword [ebx + 0x38], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x2c], eax
mov byte [ebx + 0x35], 3
mov dword [esp + 0x24], esi
mov eax, dword [ecx + 0x1c]
cmp eax, 1
jle 0x48906c
mov edi, dword [esp + 0x6c]
mov ecx, dword [ebp]
sub eax, edi
dec eax
mov dword [esp + 0x50], eax
lea edx, [eax + eax*8]
lea eax, [edx*8 + 0x50]
push eax
push ecx
call fcn.0043fa70
add esp, 8
cmp eax, esi
mov dword [esp + 0x20], eax
je 0x4894de
mov edx, dword [esp + 0x50]
mov esi, dword [esp + 0x34]
lea edi, [eax + 8]
lea ecx, [edx + 1]
mov word [eax + 2], cx
mov word [eax], cx
mov ecx, 0x12
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x68]
mov edx, dword [ecx + 4]
mov ecx, dword [esp + 0x50]
add edx, 8
cmp ecx, 1
jl 0x489073
add eax, 0x50
mov dword [esp + 0x50], ecx
mov dword [esp + 0x3c], eax
lea eax, [ebx + 0x8c]
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x40]
xor eax, eax
mov edi, dword [esp + 0x3c]
mov al, byte [ecx]
mov ecx, 0x12
lea eax, [eax + eax*8]
lea esi, [edx + eax*8]
mov eax, dword [esp + 0x50]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
add esi, 0x58
add ecx, 0x48
dec eax
mov dword [esp + 0x40], esi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x50], eax
jne 0x489030
jmp 0x489073
mov ecx, dword [ecx + 4]
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0x70]
and eax, 8
test ax, ax
mov dword [esp + 0x40], eax
jne 0x4890a9
mov eax, dword [ebp + 0x4c]
mov edx, dword [esp + 0x18]
lea ecx, [eax + 1]
push ecx
push 0
lea eax, [ecx + 1]
push 0xa
push edx
mov dword [esp + 0x58], ecx
mov dword [ebp + 0x4c], eax
mov dword [esp + 0x5c], eax
call fcn.0046c410
add esp, 0x10
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
xor esi, esi
push eax
push esi
push 7
push ecx
call fcn.0046c410
mov edx, dword [esp + 0x24]
mov dword [esp + 0x4c], eax
add esp, 0x10
mov eax, dword [edx + 0x18]
cmp eax, 1
jle 0x489169
cmp eax, esi
mov dword [esp + 0x50], esi
jle 0x489169
mov edi, dword [esp + 0x24]
mov dword [esp + 0x70], esi
mov ecx, edx
mov eax, dword [ecx + 0x20]
mov edx, dword [esp + 0x70]
add eax, edx
mov esi, dword [eax]
mov dl, byte [esi + 2]
and dl, 1
cmp dl, 1
je 0x48912e
test byte [eax + 0x12], 0x12
jne 0x48912e
test word [eax + 0x10], 0xfff
je 0x48912e
mov eax, dword [ebp]
push 0
push esi
push eax
call fcn.004710c0
mov ecx, dword [ebp]
push eax
push edi
push ecx
call fcn.0046b1d0
mov ecx, dword [esp + 0x2c]
add esp, 0x18
mov edi, eax
mov eax, dword [esp + 0x50]
mov esi, dword [esp + 0x70]
mov edx, dword [ecx + 0x18]
inc eax
add esi, 0x28
cmp eax, edx
mov dword [esp + 0x50], eax
mov dword [esp + 0x70], esi
jl 0x4890ea
test edi, edi
mov dword [esp + 0x24], edi
je 0x48916d
push 0
push edi
push 0
push 0x45
push ebp
call fcn.0046b0f0
mov edi, eax
add esp, 0x14
mov dword [esp + 0x24], edi
jmp 0x48916d
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
xor eax, eax
mov dword [esp + 0x70], eax
cmp dword [edx + 0x18], eax
jle 0x48937f
mov dword [esp + 0x30], eax
jmp 0x48918a
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
mov edx, dword [ecx + 0x20]
mov ecx, dword [esp + 0x10]
add eax, edx
mov edx, dword [eax + 8]
cmp edx, ecx
je 0x4891b2
cmp word [eax + 0x10], 0x200
jne 0x4892c8
mov edi, dword [esp + 0x24]
mov eax, dword [eax]
test edi, edi
je 0x4891bd
mov dword [edi + 8], eax
mov eax, edi
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x20]
push ecx
push 0xf0
push 0
push 0
push eax
push esi
push ebp
call fcn.00484330
mov edi, eax
add esp, 0x1c
test edi, edi
je 0x4892c8
mov ecx, dword [esp + 0x6c]
xor edx, edx
mov dl, byte [ebx + 0x34]
push 0
lea eax, [edi + 0x38]
push edx
push ecx
push eax
push esi
push ebp
call fcn.00488130
add esp, 0x18
cmp word [esp + 0x40], 0
jne 0x489262
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x70]
mov eax, dword [edx + 0x18]
dec eax
cmp ecx, eax
jne 0x48921c
or esi, 0xffffffff
jmp 0x489220
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
push 0
push ecx
mov ecx, dword [eax + 0x10]
push edx
push 0xffffffffffffffff
push ecx
push ebp
call fcn.0046f0f0
add esp, 0x18
push esi
mov esi, dword [esp + 0x1c]
push eax
push esi
call fcn.0046cf30
mov edx, dword [esp + 0x54]
add esp, 4
add eax, 2
push eax
push edx
push 0x72
push esi
call fcn.0046ea30
add esp, 0x18
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push eax
push ecx
push 2
push edx
call fcn.0046c410
mov al, byte [edi + 0xd]
add esp, 0x10
test al, al
je 0x48928a
mov dword [esp + 0x5c], 1
mov eax, dword [edi + 0x38]
test eax, 0xf0000
je 0x4892b7
test eax, 0x20000000
jne 0x4892b7
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4892ae
mov eax, dword [esp + 0x28]
mov ecx, dword [edi + 0x48]
cmp ecx, eax
jne 0x4892b7
mov ecx, dword [edi + 0x48]
mov dword [esp + 0x28], ecx
jmp 0x4892bf
mov dword [esp + 0x28], 0
push edi
call fcn.00489b20
add esp, 4
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x70]
add edx, 0x28
inc eax
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x70], eax
cmp eax, dword [edx + 0x18]
jl 0x489186
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
test eax, eax
mov dword [ebx + 0x40], eax
je 0x489303
mov eax, dword [esp + 0x54]
mov dword [ebx + 0x20], eax
test edi, edi
je 0x48931b
mov dword [edi + 8], 0
mov ecx, dword [ebp]
push edi
push ecx
call fcn.00462ed0
add esp, 8
push esi
call fcn.0046cf30
mov edx, dword [esp + 0x40]
push eax
push edx
push esi
call fcn.0045fc40
mov eax, dword [ebx + 0x24]
push eax
push 0
push 1
push esi
call fcn.0046c410
mov ecx, dword [esp + 0x78]
push ecx
push esi
call fcn.0046cf10
mov edx, dword [esp + 0x90]
add esp, 0x28
cmp dword [edx + 0x1c], 1
jle 0x489367
mov eax, dword [esp + 0x20]
mov ecx, dword [ebp]
push eax
push ecx
call fcn.0043f7f0
add esp, 8
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x4893b8
mov edx, dword [esp + 0x60]
push edx
push ebx
call fcn.00489640
add esp, 8
jmp 0x4893b8
mov esi, dword [esp + 0x18]
jmp 0x4892f1
mov al, byte [esi + 0x4eeb14]
mov ecx, dword [esp + 0x2c]
mov byte [ebx + 0x35], al
mov eax, dword [esp + 0x10]
xor edx, edx
mov dword [ebx + 0x38], eax
mov dl, byte [esi + 0x4eeb18]
push ecx
push eax
push edx
push edi
call fcn.0046c410
add esp, 0x10
inc eax
mov dword [ebx + 0x3c], eax
mov byte [ebx + 0x36], 1
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push eax
mov ecx, dword [edi + 4]
push ecx
call fcn.00485030
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x80]
not eax
not edx
and ecx, eax
mov eax, dword [edi + 0x18]
and esi, edx
add esp, 8
mov dword [esp + 0x78], esi
mov esi, dword [edi + 0x20]
test eax, eax
mov dword [esp + 0x74], ecx
jle 0x489457
mov dword [esp + 0x70], eax
test byte [esi + 0x12], 6
jne 0x489449
mov eax, dword [esi + 0x20]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
and eax, ecx
mov ecx, dword [esi + 0x24]
and ecx, edx
or eax, ecx
je 0x48941c
mov edx, dword [esp + 0x68]
mov byte [edx + 0xd], 1
jmp 0x489449
mov ecx, dword [ebx + 0x18]
mov eax, dword [esi]
test ecx, ecx
je 0x489430
mov cl, byte [eax + 2]
and cl, 1
cmp cl, 1
jne 0x489449
mov edx, dword [esp + 0x44]
push 8
push edx
push eax
push ebp
call fcn.0046f3a0
mov al, byte [esi + 0x12]
add esp, 0x10
or al, 4
mov byte [esi + 0x12], al
mov eax, dword [esp + 0x70]
add esi, 0x28
dec eax
mov dword [esp + 0x70], eax
jne 0x4893f6
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x4894d0
mov esi, dword [esp + 0x18]
push esi
call fcn.0046cf30
mov dword [ebx + 0x30], eax
mov eax, dword [ebx + 0x18]
push eax
push 1
push 7
push esi
call fcn.0046c410
push ebp
call fcn.0047e870
mov eax, dword [edi + 0x18]
mov esi, dword [edi + 0x20]
add esp, 0x18
xor ebx, ebx
test eax, eax
jle 0x4894d0
test byte [esi + 0x12], 6
jne 0x4894c5
mov eax, dword [esi + 0x20]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
and eax, ecx
mov ecx, dword [esi + 0x24]
and ecx, edx
or eax, ecx
jne 0x4894c5
mov ecx, dword [esp + 0x44]
mov edx, dword [esi]
push 8
push ecx
push edx
push ebp
call fcn.0046f3a0
mov al, byte [esi + 0x12]
add esp, 0x10
or al, 4
mov byte [esi + 0x12], al
mov eax, dword [edi + 0x18]
inc ebx
add esi, 0x28
cmp ebx, eax
jl 0x48948e
mov eax, dword [esp + 0x38]
push eax
push ebp
call fcn.0046c480
add esp, 8
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x54
ret