Function at 0x488e50
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 0x488ebe
mov al, byte [esp + 0x70]
mov dword [esp + 0x50], 1
test al, 0x20
je 0x488ec2
mov dword [esp + 0x50], edx
push edi
call fcn.0046d7e0
push edi
mov dword [esp + 0x34], eax
mov dword [ebx + 0x28], eax
mov dword [ebx + 0x24], eax
call fcn.0046d7e0
mov dword [esp + 0x4c], eax
mov dword [ebx + 0x2c], eax
mov al, byte [ebx + 0x34]
add esp, 8
test al, al
jbe 0x488f0d
mov edx, dword [esp + 0x34]
test byte [edx + 0x20], 8
je 0x488f0d
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.0046cd30
add esp, 0x10
mov eax, dword [esp + 0x34]
test byte [eax + 0x24], 4
je 0x488f4f
mov ecx, dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
dec ecx
push esi
push ecx
push 7
push edi
call fcn.0046cd30
push esi
push 4
push edi
call fcn.0046d7c0
mov edx, dword [esp + 0x48]
inc esi
push edx
push esi
push 0x1b
push edi
mov dword [ebx + 0x3c], eax
call fcn.0046cd30
add esp, 0x2c
mov byte [ebx + 0x35], 1
jmp 0x489cd8
mov eax, dword [ebx]
test eax, 0x8000000
je 0x4890fc
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.0046f9b0
lea eax, [esi + 2]
push eax
push ebp
mov dword [esp + 0x64], eax
call fcn.00470330
add esp, 0xc
cmp esi, 1
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], 1
jl 0x48900a
mov ecx, dword [esp + 0x34]
xor esi, esi
test ecx, ecx
jle 0x488ff5
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x70]
cmp dword [eax], edx
je 0x488fbf
inc esi
add eax, 8
cmp esi, ecx
jl 0x488fb1
jmp 0x488ff5
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.0046da90
mov ecx, dword [esp + 0x40]
add esp, 0xc
cmp esi, ecx
je 0x48900a
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x34]
inc eax
cmp eax, ecx
mov dword [esp + 0x70], eax
jle 0x488f9f
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.0046cd30
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
inc eax
dec ecx
push eax
push ecx
push 7
push edi
call fcn.0046cd30
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.0046c350
mov eax, dword [esp + 0x70]
add esp, 0x3c
test eax, eax
mov dword [esi + 0x1c], 0
jle 0x4890c8
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 0x4890af
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.00489f60
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 0x48908d
mov edx, dword [esp + 0x10]
push edi
mov byte [ebx + 0x35], 0x8a
mov dword [ebx + 0x38], edx
call fcn.0046d850
mov ecx, dword [esp + 0x70]
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x5c]
push eax
push ecx
push ebp
call fcn.00470360
push 1
push ebp
call fcn.0046f9c0
add esp, 0x18
jmp 0x489cd8
test ah, 0x10
je 0x489178
push ebp
call fcn.0046cd70
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.00486be0
push esi
push ebx
push eax
push ebp
call fcn.0048a030
mov esi, eax
mov eax, dword [ebx + 0x28]
push eax
push esi
push 0x15
push edi
mov dword [esp + 0x68], eax
call fcn.0046cd30
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.0046c390
mov edx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push edx
push ebp
call fcn.0046fab0
add esp, 0x24
mov byte [ebx + 0x35], 0x95
jmp 0x489cd8
test ah, 0x20
je 0x489392
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.00486be0
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.00486be0
add esp, 0x38
mov dword [esp + 0x6c], eax
test esi, esi
je 0x4891f7
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 0x48927a
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.0046fc00
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.0046c390
mov edx, dword [esp + 0x78]
push 1
push edx
push ebp
call fcn.0046fbe0
mov eax, dword [esp + 0x80]
push eax
push ebp
call fcn.0046cda0
mov ecx, dword [esp + 0xa4]
push ecx
push ebx
call fcn.00489f60
add esp, 0x3c
jmp 0x48929a
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.0046cd30
add esp, 0x10
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x4892fc
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.0046da90
mov ecx, dword [esp + 0x68]
add esp, 0xc
mov al, byte [ecx]
cmp al, 0x4f
je 0x4892df
cmp al, 0x4d
je 0x4892df
mov eax, esi
neg eax
sbb eax, eax
and eax, 2
add eax, 0x4d
jmp 0x4892ea
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.00489f60
add esp, 8
push edi
call fcn.0046d850
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 0x489332
mov eax, dword [esp + 0x6c]
test eax, eax
jne 0x489332
mov byte [ebx + 0x36], 1
cmp dword [esp + 0x30], 0x95
je 0x489cd8
push ebp
call fcn.0046cd70
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.0046cd30
mov ecx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push ecx
push ebp
call fcn.0046fab0
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.0046c390
push 0x6b
push edi
call fcn.0046d260
add esp, 0x40
jmp 0x489cd8
test eax, 0x30000
je 0x48986f
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 0x4893d0
mov dword [esp + 0x28], 0xffffffff
jmp 0x4893da
mov edx, dword [edx + 4]
mov edx, dword [edx + esi*4]
mov dword [esp + 0x28], edx
test byte [esp + 0x70], 1
je 0x4893f6
test dword [ebx], 0x800000
je 0x4893f6
cmp ecx, esi
jle 0x4893f6
mov eax, 1
mov dword [esp + 0x48], eax
test dword [ebx], 0x100000
je 0x489432
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.00486be0
mov dword [esp + 0x88], eax
add esp, 0x1c
mov eax, 1
test dword [ebx], 0x200000
je 0x48946b
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.00486be0
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.0048a150
mov edx, dword [esp + 0x38]
mov dword [esp + 0x8c], eax
mov eax, dword [ebp]
push edx
push eax
call fcn.00451ba0
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 0x4894ca
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 0x4894d6
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x4894e8
cmp eax, esi
jne 0x4894e8
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x2c], eax
jmp 0x4894f0
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x489509
test byte [eax + 0x10], 0x28
jne 0x489509
mov dword [esp + 0x3c], 0
mov edx, 1
jmp 0x489512
mov edx, 1
mov dword [esp + 0x3c], edx
test ecx, ecx
je 0x489524
test byte [ecx + 0x10], 0x28
mov dword [esp + 0x4c], 0
je 0x489528
mov dword [esp + 0x4c], edx
test eax, eax
jne 0x489534
test esi, esi
mov dword [esp + 0x40], eax
jle 0x489538
mov dword [esp + 0x40], edx
test eax, eax
mov dword [esp + 0x24], esi
je 0x4895c7
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.0046da90
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.00489e10
mov eax, dword [esp + 0x38]
add esp, 0x1c
test eax, eax
je 0x4895be
mov dl, byte [eax + esi]
mov eax, dword [esp + 0x24]
push edx
push eax
call fcn.0046e8e0
add esp, 8
cmp al, 0x62
jne 0x48959d
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.00489e80
add esp, 8
test eax, eax
je 0x4895be
mov edx, dword [esp + 0x1c]
mov byte [edx + esi], 0x62
lea eax, [esi + 1]
mov dword [esp + 0x24], eax
jmp 0x4895fa
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4895fa
mov ecx, dword [esp + 0x70]
add ecx, esi
push ecx
push 0
push 0xa
push edi
call fcn.0046cd30
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.00489fc0
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.0046f350
mov eax, dword [esp + 0x94]
add esp, 0x28
test eax, eax
mov dword [esp + 0x24], esi
je 0x489708
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.0046f920
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x30]
lea eax, [ecx + esi]
push eax
push edx
push ebp
call fcn.0046da90
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.00489e10
mov eax, dword [esp + 0x48]
add esp, 0x28
test eax, eax
je 0x4896ea
mov cl, byte [eax + esi]
mov edx, dword [esp + 0x24]
push ecx
push edx
call fcn.0046e8e0
add esp, 8
cmp al, 0x62
jne 0x4896c9
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.00489e80
add esp, 8
test eax, eax
je 0x4896ea
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.00489fc0
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.00440110
mov eax, dword [esp + 0x28]
mov ecx, dword [ebp]
push eax
push ecx
call fcn.00440110
push edi
call fcn.0046d850
mov dword [ebx + 0x3c], eax
mov eax, dword [esp + 0x80]
add esp, 0x14
test eax, eax
jne 0x489743
test esi, esi
jne 0x489743
xor eax, eax
jmp 0x489748
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 0x489791
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.0046f350
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x64]
cmp ecx, eax
setne cl
push ecx
push edi
call fcn.0046d260
add esp, 0x20
push ebp
call fcn.0046cd70
mov dword [esp + 0x74], eax
mov eax, dword [ebx]
add esp, 4
test eax, 0x300000
je 0x4897d2
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x34]
push edx
push esi
push eax
push 0x1d
push edi
call fcn.0046c390
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x84]
push ecx
push edx
push 0x49
push edi
call fcn.0046cd30
add esp, 0x24
mov eax, dword [esp + 0x70]
push eax
push ebp
call fcn.0046cda0
mov ecx, dword [esp + 0x34]
push ecx
push ebx
call fcn.00489f60
mov edx, dword [esp + 0x7c]
push edx
push ebx
call fcn.00489f60
mov eax, dword [esp + 0x68]
add esp, 0x18
test eax, eax
jne 0x489837
push ebp
call fcn.0046cd70
mov esi, eax
mov eax, dword [esp + 0x38]
push esi
push eax
push 0x63
push edi
mov dword [esp + 0x4c], esi
call fcn.0046cd30
mov ecx, dword [esp + 0x24]
push esi
push 0xffffffffffffffff
push ecx
push ebp
call fcn.0046fab0
mov edx, dword [esp + 0x34]
push esi
push edx
push 0x32
push edi
call fcn.0046cd30
add esp, 0x34
mov eax, dword [ebx]
test eax, 0x2000000
je 0x489846
mov byte [ebx + 0x35], 0x95
jmp 0x489858
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x489854
mov byte [ebx + 0x35], 0x5c
jmp 0x489858
mov byte [ebx + 0x35], 0x5f
mov ecx, dword [esp + 0x34]
test eax, 0x80000000
mov dword [ebx + 0x38], ecx
je 0x489cd8
jmp 0x489cd4
test eax, 0x10000000
je 0x489ca8
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.0046d7e0
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 0x48998c
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.00440390
add esp, 8
cmp eax, esi
mov dword [esp + 0x20], eax
je 0x489dfe
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 0x489993
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 0x489950
jmp 0x489993
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 0x4899c9
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.0046cd30
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.0046cd30
mov edx, dword [esp + 0x24]
mov dword [esp + 0x4c], eax
add esp, 0x10
mov eax, dword [edx + 0x18]
cmp eax, 1
jle 0x489a89
cmp eax, esi
mov dword [esp + 0x50], esi
jle 0x489a89
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 0x489a4e
test byte [eax + 0x12], 0x12
jne 0x489a4e
test word [eax + 0x10], 0xfff
je 0x489a4e
mov eax, dword [ebp]
push 0
push esi
push eax
call fcn.004719e0
mov ecx, dword [ebp]
push eax
push edi
push ecx
call fcn.0046baf0
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 0x489a0a
test edi, edi
mov dword [esp + 0x24], edi
je 0x489a8d
push 0
push edi
push 0
push 0x45
push ebp
call fcn.0046ba10
mov edi, eax
add esp, 0x14
mov dword [esp + 0x24], edi
jmp 0x489a8d
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
xor eax, eax
mov dword [esp + 0x70], eax
cmp dword [edx + 0x18], eax
jle 0x489c9f
mov dword [esp + 0x30], eax
jmp 0x489aaa
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 0x489ad2
cmp word [eax + 0x10], 0x200
jne 0x489be8
mov edi, dword [esp + 0x24]
mov eax, dword [eax]
test edi, edi
je 0x489add
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.00484c50
mov edi, eax
add esp, 0x1c
test edi, edi
je 0x489be8
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.00488a50
add esp, 0x18
cmp word [esp + 0x40], 0
jne 0x489b82
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x70]
mov eax, dword [edx + 0x18]
dec eax
cmp ecx, eax
jne 0x489b3c
or esi, 0xffffffff
jmp 0x489b40
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.0046fa10
add esp, 0x18
push esi
mov esi, dword [esp + 0x1c]
push eax
push esi
call fcn.0046d850
mov edx, dword [esp + 0x54]
add esp, 4
add eax, 2
push eax
push edx
push 0x72
push esi
call fcn.0046f350
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.0046cd30
mov al, byte [edi + 0xd]
add esp, 0x10
test al, al
je 0x489baa
mov dword [esp + 0x5c], 1
mov eax, dword [edi + 0x38]
test eax, 0xf0000
je 0x489bd7
test eax, 0x20000000
jne 0x489bd7
mov eax, dword [esp + 0x30]
test eax, eax
je 0x489bce
mov eax, dword [esp + 0x28]
mov ecx, dword [edi + 0x48]
cmp ecx, eax
jne 0x489bd7
mov ecx, dword [edi + 0x48]
mov dword [esp + 0x28], ecx
jmp 0x489bdf
mov dword [esp + 0x28], 0
push edi
call fcn.0048a440
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 0x489aa6
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
test eax, eax
mov dword [ebx + 0x40], eax
je 0x489c23
mov eax, dword [esp + 0x54]
mov dword [ebx + 0x20], eax
test edi, edi
je 0x489c3b
mov dword [edi + 8], 0
mov ecx, dword [ebp]
push edi
push ecx
call fcn.004637f0
add esp, 8
push esi
call fcn.0046d850
mov edx, dword [esp + 0x40]
push eax
push edx
push esi
call fcn.00460560
mov eax, dword [ebx + 0x24]
push eax
push 0
push 1
push esi
call fcn.0046cd30
mov ecx, dword [esp + 0x78]
push ecx
push esi
call fcn.0046d830
mov edx, dword [esp + 0x90]
add esp, 0x28
cmp dword [edx + 0x1c], 1
jle 0x489c87
mov eax, dword [esp + 0x20]
mov ecx, dword [ebp]
push eax
push ecx
call fcn.00440110
add esp, 8
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x489cd8
mov edx, dword [esp + 0x60]
push edx
push ebx
call fcn.00489f60
add esp, 8
jmp 0x489cd8
mov esi, dword [esp + 0x18]
jmp 0x489c11
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.0046cd30
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.00485950
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 0x489d77
mov dword [esp + 0x70], eax
test byte [esi + 0x12], 6
jne 0x489d69
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 0x489d3c
mov edx, dword [esp + 0x68]
mov byte [edx + 0xd], 1
jmp 0x489d69
mov ecx, dword [ebx + 0x18]
mov eax, dword [esi]
test ecx, ecx
je 0x489d50
mov cl, byte [eax + 2]
and cl, 1
cmp cl, 1
jne 0x489d69
mov edx, dword [esp + 0x44]
push 8
push edx
push eax
push ebp
call fcn.0046fcc0
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 0x489d16
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x489df0
mov esi, dword [esp + 0x18]
push esi
call fcn.0046d850
mov dword [ebx + 0x30], eax
mov eax, dword [ebx + 0x18]
push eax
push 1
push 7
push esi
call fcn.0046cd30
push ebp
call fcn.0047f190
mov eax, dword [edi + 0x18]
mov esi, dword [edi + 0x20]
add esp, 0x18
xor ebx, ebx
test eax, eax
jle 0x489df0
test byte [esi + 0x12], 6
jne 0x489de5
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 0x489de5
mov ecx, dword [esp + 0x44]
mov edx, dword [esi]
push 8
push ecx
push edx
push ebp
call fcn.0046fcc0
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 0x489dae
mov eax, dword [esp + 0x38]
push eax
push ebp
call fcn.0046cda0
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