Function at 0x488d90
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 0x488dfe
mov al, byte [esp + 0x70]
mov dword [esp + 0x50], 1
test al, 0x20
je 0x488e02
mov dword [esp + 0x50], edx
push edi
call fcn.0046d720
push edi
mov dword [esp + 0x34], eax
mov dword [ebx + 0x28], eax
mov dword [ebx + 0x24], eax
call fcn.0046d720
mov dword [esp + 0x4c], eax
mov dword [ebx + 0x2c], eax
mov al, byte [ebx + 0x34]
add esp, 8
test al, al
jbe 0x488e4d
mov edx, dword [esp + 0x34]
test byte [edx + 0x20], 8
je 0x488e4d
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.0046cc70
add esp, 0x10
mov eax, dword [esp + 0x34]
test byte [eax + 0x24], 4
je 0x488e8f
mov ecx, dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
dec ecx
push esi
push ecx
push 7
push edi
call fcn.0046cc70
push esi
push 4
push edi
call fcn.0046d700
mov edx, dword [esp + 0x48]
inc esi
push edx
push esi
push 0x1b
push edi
mov dword [ebx + 0x3c], eax
call fcn.0046cc70
add esp, 0x2c
mov byte [ebx + 0x35], 1
jmp 0x489c18
mov eax, dword [ebx]
test eax, 0x8000000
je 0x48903c
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.0046f8f0
lea eax, [esi + 2]
push eax
push ebp
mov dword [esp + 0x64], eax
call fcn.00470270
add esp, 0xc
cmp esi, 1
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], 1
jl 0x488f4a
mov ecx, dword [esp + 0x34]
xor esi, esi
test ecx, ecx
jle 0x488f35
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x70]
cmp dword [eax], edx
je 0x488eff
inc esi
add eax, 8
cmp esi, ecx
jl 0x488ef1
jmp 0x488f35
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.0046d9d0
mov ecx, dword [esp + 0x40]
add esp, 0xc
cmp esi, ecx
je 0x488f4a
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x34]
inc eax
cmp eax, ecx
mov dword [esp + 0x70], eax
jle 0x488edf
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.0046cc70
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
inc eax
dec ecx
push eax
push ecx
push 7
push edi
call fcn.0046cc70
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.0046c290
mov eax, dword [esp + 0x70]
add esp, 0x3c
test eax, eax
mov dword [esi + 0x1c], 0
jle 0x489008
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 0x488fef
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.00489ea0
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 0x488fcd
mov edx, dword [esp + 0x10]
push edi
mov byte [ebx + 0x35], 0x8a
mov dword [ebx + 0x38], edx
call fcn.0046d790
mov ecx, dword [esp + 0x70]
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x5c]
push eax
push ecx
push ebp
call fcn.004702a0
push 1
push ebp
call fcn.0046f900
add esp, 0x18
jmp 0x489c18
test ah, 0x10
je 0x4890b8
push ebp
call fcn.0046ccb0
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.00486b20
push esi
push ebx
push eax
push ebp
call fcn.00489f70
mov esi, eax
mov eax, dword [ebx + 0x28]
push eax
push esi
push 0x15
push edi
mov dword [esp + 0x68], eax
call fcn.0046cc70
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.0046c2d0
mov edx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push edx
push ebp
call fcn.0046f9f0
add esp, 0x24
mov byte [ebx + 0x35], 0x95
jmp 0x489c18
test ah, 0x20
je 0x4892d2
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.00486b20
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.00486b20
add esp, 0x38
mov dword [esp + 0x6c], eax
test esi, esi
je 0x489137
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 0x4891ba
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.0046fb40
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.0046c2d0
mov edx, dword [esp + 0x78]
push 1
push edx
push ebp
call fcn.0046fb20
mov eax, dword [esp + 0x80]
push eax
push ebp
call fcn.0046cce0
mov ecx, dword [esp + 0xa4]
push ecx
push ebx
call fcn.00489ea0
add esp, 0x3c
jmp 0x4891da
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.0046cc70
add esp, 0x10
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x48923c
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.0046d9d0
mov ecx, dword [esp + 0x68]
add esp, 0xc
mov al, byte [ecx]
cmp al, 0x4f
je 0x48921f
cmp al, 0x4d
je 0x48921f
mov eax, esi
neg eax
sbb eax, eax
and eax, 2
add eax, 0x4d
jmp 0x48922a
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.00489ea0
add esp, 8
push edi
call fcn.0046d790
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 0x489272
mov eax, dword [esp + 0x6c]
test eax, eax
jne 0x489272
mov byte [ebx + 0x36], 1
cmp dword [esp + 0x30], 0x95
je 0x489c18
push ebp
call fcn.0046ccb0
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.0046cc70
mov ecx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push ecx
push ebp
call fcn.0046f9f0
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.0046c2d0
push 0x6b
push edi
call fcn.0046d1a0
add esp, 0x40
jmp 0x489c18
test eax, 0x30000
je 0x4897af
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 0x489310
mov dword [esp + 0x28], 0xffffffff
jmp 0x48931a
mov edx, dword [edx + 4]
mov edx, dword [edx + esi*4]
mov dword [esp + 0x28], edx
test byte [esp + 0x70], 1
je 0x489336
test dword [ebx], 0x800000
je 0x489336
cmp ecx, esi
jle 0x489336
mov eax, 1
mov dword [esp + 0x48], eax
test dword [ebx], 0x100000
je 0x489372
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.00486b20
mov dword [esp + 0x88], eax
add esp, 0x1c
mov eax, 1
test dword [ebx], 0x200000
je 0x4893ab
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.00486b20
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.0048a090
mov edx, dword [esp + 0x38]
mov dword [esp + 0x8c], eax
mov eax, dword [ebp]
push edx
push eax
call fcn.00451ae0
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 0x48940a
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 0x489416
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x489428
cmp eax, esi
jne 0x489428
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x2c], eax
jmp 0x489430
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x489449
test byte [eax + 0x10], 0x28
jne 0x489449
mov dword [esp + 0x3c], 0
mov edx, 1
jmp 0x489452
mov edx, 1
mov dword [esp + 0x3c], edx
test ecx, ecx
je 0x489464
test byte [ecx + 0x10], 0x28
mov dword [esp + 0x4c], 0
je 0x489468
mov dword [esp + 0x4c], edx
test eax, eax
jne 0x489474
test esi, esi
mov dword [esp + 0x40], eax
jle 0x489478
mov dword [esp + 0x40], edx
test eax, eax
mov dword [esp + 0x24], esi
je 0x489507
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.0046d9d0
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.00489d50
mov eax, dword [esp + 0x38]
add esp, 0x1c
test eax, eax
je 0x4894fe
mov dl, byte [eax + esi]
mov eax, dword [esp + 0x24]
push edx
push eax
call fcn.0046e820
add esp, 8
cmp al, 0x62
jne 0x4894dd
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.00489dc0
add esp, 8
test eax, eax
je 0x4894fe
mov edx, dword [esp + 0x1c]
mov byte [edx + esi], 0x62
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x48953a
mov eax, dword [esp + 0x48]
test eax, eax
je 0x48953a
mov ecx, dword [esp + 0x70]
add ecx, esi
push ecx
push 0
push 0xa
push edi
call fcn.0046cc70
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.00489f00
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 + 0x4efb08]
push ecx
push edi
call fcn.0046f290
mov eax, dword [esp + 0x94]
add esp, 0x28
test eax, eax
mov dword [esp + 0x24], esi
je 0x489648
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.0046f860
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x30]
lea eax, [ecx + esi]
push eax
push edx
push ebp
call fcn.0046d9d0
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.00489d50
mov eax, dword [esp + 0x48]
add esp, 0x28
test eax, eax
je 0x48962a
mov cl, byte [eax + esi]
mov edx, dword [esp + 0x24]
push ecx
push edx
call fcn.0046e820
add esp, 8
cmp al, 0x62
jne 0x489609
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.00489dc0
add esp, 8
test eax, eax
je 0x48962a
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.00489f00
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.00440050
mov eax, dword [esp + 0x28]
mov ecx, dword [ebp]
push eax
push ecx
call fcn.00440050
push edi
call fcn.0046d790
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x80]
add esp, 0x14
test eax, eax
jne 0x489683
test esi, esi
jne 0x489683
xor eax, eax
jmp 0x489688
mov eax, 1
mov edx, dword [esp + 0x30]
inc edx
imul edx, eax
xor eax, eax
mov al, byte [edx + 0x4efb10]
cmp eax, 0x95
je 0x4896d1
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.0046f290
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x64]
cmp ecx, eax
setne cl
push ecx
push edi
call fcn.0046d1a0
add esp, 0x20
push ebp
call fcn.0046ccb0
mov dword [esp + 0x74], eax
mov eax, dword [ebx]
add esp, 4
test eax, 0x300000
je 0x489712
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x34]
push edx
push esi
push eax
push 0x1d
push edi
call fcn.0046c2d0
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x84]
push ecx
push edx
push 0x49
push edi
call fcn.0046cc70
add esp, 0x24
mov eax, dword [esp + 0x70]
push eax
push ebp
call fcn.0046cce0
mov ecx, dword [esp + 0x34]
push ecx
push ebx
call fcn.00489ea0
mov edx, dword [esp + 0x7c]
push edx
push ebx
call fcn.00489ea0
mov eax, dword [esp + 0x68]
add esp, 0x18
test eax, eax
jne 0x489777
push ebp
call fcn.0046ccb0
mov esi, eax
mov eax, dword [esp + 0x38]
push esi
push eax
push 0x63
push edi
mov dword [esp + 0x4c], esi
call fcn.0046cc70
mov ecx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push ecx
push ebp
call fcn.0046f9f0
mov edx, dword [esp + 0x34]
push esi
push edx
push 0x32
push edi
call fcn.0046cc70
add esp, 0x34
mov eax, dword [ebx]
test eax, 0x2000000
je 0x489786
mov byte [ebx + 0x35], 0x95
jmp 0x489798
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x489794
mov byte [ebx + 0x35], 0x5c
jmp 0x489798
mov byte [ebx + 0x35], 0x5f
mov ecx, dword [esp + 0x34]
test eax, 0x80000000
mov dword [ebx + 0x38], ecx
je 0x489c18
jmp 0x489c14
test eax, 0x10000000
je 0x489be8
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.0046d720
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 0x4898cc
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.004402d0
add esp, 8
cmp eax, esi
mov dword [esp + 0x20], eax
je 0x489d3e
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 0x4898d3
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 0x489890
jmp 0x4898d3
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 0x489909
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.0046cc70
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.0046cc70
mov edx, dword [esp + 0x24]
mov dword [esp + 0x4c], eax
add esp, 0x10
mov eax, dword [edx + 0x18]
cmp eax, 1
jle 0x4899c9
cmp eax, esi
mov dword [esp + 0x50], esi
jle 0x4899c9
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 0x48998e
test byte [eax + 0x12], 0x12
jne 0x48998e
test word [eax + 0x10], 0xfff
je 0x48998e
mov eax, dword [ebp]
push 0
push esi
push eax
call fcn.00471920
mov ecx, dword [ebp]
push eax
push edi
push ecx
call fcn.0046ba30
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 0x48994a
test edi, edi
mov dword [esp + 0x24], edi
je 0x4899cd
push 0
push edi
push 0
push 0x45
push ebp
call fcn.0046b950
mov edi, eax
add esp, 0x14
mov dword [esp + 0x24], edi
jmp 0x4899cd
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
xor eax, eax
mov dword [esp + 0x70], eax
cmp dword [edx + 0x18], eax
jle 0x489bdf
mov dword [esp + 0x30], eax
jmp 0x4899ea
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 0x489a12
cmp word [eax + 0x10], 0x200
jne 0x489b28
mov edi, dword [esp + 0x24]
mov eax, dword [eax]
test edi, edi
je 0x489a1d
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.00484b90
mov edi, eax
add esp, 0x1c
test edi, edi
je 0x489b28
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.00488990
add esp, 0x18
cmp word [esp + 0x40], 0
jne 0x489ac2
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x70]
mov eax, dword [edx + 0x18]
dec eax
cmp ecx, eax
jne 0x489a7c
or esi, 0xffffffff
jmp 0x489a80
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.0046f950
add esp, 0x18
push esi
mov esi, dword [esp + 0x1c]
push eax
push esi
call fcn.0046d790
mov edx, dword [esp + 0x54]
add esp, 4
add eax, 2
push eax
push edx
push 0x72
push esi
call fcn.0046f290
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.0046cc70
mov al, byte [edi + 0xd]
add esp, 0x10
test al, al
je 0x489aea
mov dword [esp + 0x5c], 1
mov eax, dword [edi + 0x38]
test eax, 0xf0000
je 0x489b17
test eax, 0x20000000
jne 0x489b17
mov eax, dword [esp + 0x30]
test eax, eax
je 0x489b0e
mov eax, dword [esp + 0x28]
mov ecx, dword [edi + 0x48]
cmp ecx, eax
jne 0x489b17
mov ecx, dword [edi + 0x48]
mov dword [esp + 0x28], ecx
jmp 0x489b1f
mov dword [esp + 0x28], 0
push edi
call fcn.0048a380
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 0x4899e6
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
test eax, eax
mov dword [ebx + 0x40], eax
je 0x489b63
mov eax, dword [esp + 0x54]
mov dword [ebx + 0x20], eax
test edi, edi
je 0x489b7b
mov dword [edi + 8], 0
mov ecx, dword [ebp]
push edi
push ecx
call fcn.00463730
add esp, 8
push esi
call fcn.0046d790
mov edx, dword [esp + 0x40]
push eax
push edx
push esi
call fcn.004604a0
mov eax, dword [ebx + 0x24]
push eax
push 0
push 1
push esi
call fcn.0046cc70
mov ecx, dword [esp + 0x78]
push ecx
push esi
call fcn.0046d770
mov edx, dword [esp + 0x90]
add esp, 0x28
cmp dword [edx + 0x1c], 1
jle 0x489bc7
mov eax, dword [esp + 0x20]
mov ecx, dword [ebp]
push eax
push ecx
call fcn.00440050
add esp, 8
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x489c18
mov edx, dword [esp + 0x60]
push edx
push ebx
call fcn.00489ea0
add esp, 8
jmp 0x489c18
mov esi, dword [esp + 0x18]
jmp 0x489b51
mov al, byte [esi + 0x4efb14]
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 + 0x4efb18]
push ecx
push eax
push edx
push edi
call fcn.0046cc70
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.00485890
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 0x489cb7
mov dword [esp + 0x70], eax
test byte [esi + 0x12], 6
jne 0x489ca9
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 0x489c7c
mov edx, dword [esp + 0x68]
mov byte [edx + 0xd], 1
jmp 0x489ca9
mov ecx, dword [ebx + 0x18]
mov eax, dword [esi]
test ecx, ecx
je 0x489c90
mov cl, byte [eax + 2]
and cl, 1
cmp cl, 1
jne 0x489ca9
mov edx, dword [esp + 0x44]
push 8
push edx
push eax
push ebp
call fcn.0046fc00
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 0x489c56
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x489d30
mov esi, dword [esp + 0x18]
push esi
call fcn.0046d790
mov dword [ebx + 0x30], eax
mov eax, dword [ebx + 0x18]
push eax
push 1
push 7
push esi
call fcn.0046cc70
push ebp
call fcn.0047f0d0
mov eax, dword [edi + 0x18]
mov esi, dword [edi + 0x20]
add esp, 0x18
xor ebx, ebx
test eax, eax
jle 0x489d30
test byte [esi + 0x12], 6
jne 0x489d25
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 0x489d25
mov ecx, dword [esp + 0x44]
mov edx, dword [esi]
push 8
push ecx
push edx
push ebp
call fcn.0046fc00
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 0x489cee
mov eax, dword [esp + 0x38]
push eax
push ebp
call fcn.0046cce0
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