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

Disassembly:
sub esp, 0xbe0
push ebx
push ebp
mov ebp, ecx
mov eax, dword [ebp + 0x18]
push edi
mov edi, dword [eax + 0x5c]
mov eax, dword [ebp + 0x48]
test eax, eax
lea ebx, [ebp + 0x48]
mov dword [esp + 0x68], edi
je 0x47f588
mov ecx, dword [eax + 0xc]
test ecx, ecx
jne 0x47f588
mov ecx, ebp
call fcn.00478cf0
test eax, eax
je 0x47f588
mov ecx, ebp
call fcn.00476450
mov eax, dword [ebp + 0x44]
test eax, eax
jne 0x4806ed
cmp dword [ebx], 0
jne 0x4806ed
cmp word [edi + 0x2a], 0
jne 0x4806ed
mov ecx, dword [ebp + 4]
mov ecx, dword [ecx + 0x14]
test ecx, ecx
je 0x47f5be
call fcn.00423490
test al, al
jne 0x4806ed
mov eax, dword [ebp + 0x20]
test eax, eax
push esi
je 0x47f5e3
mov eax, dword [eax + 0x2c]
mov ecx, dword [eax + 0x1ac]
test ecx, ecx
je 0x47f5d7
mov eax, ecx
jmp 0x47f5de
mov ecx, eax
call fcn.00486cc0
cmp eax, 8
jl 0x47f654
mov esi, dword [esp + 0xbf4]
push esi
call fcn.004374e0
fld qword [0x53d6d0]
fucompp
add esp, 4
fnstsw ax
test ah, 0x44
jp 0x47f61e
push esi
call fcn.00437500
fld qword [0x53d6d0]
fucompp
add esp, 4
fnstsw ax
test ah, 0x44
jnp case.0x47f672.1
push esi
call fcn.00437520
fld qword [0x53d6d0]
fucompp
add esp, 4
fnstsw ax
test ah, 0x44
jp 0x47f65b
push esi
call fcn.00437540
fld qword [0x53d6d0]
fucompp
add esp, 4
fnstsw ax
test ah, 0x44
jnp case.0x47f672.1
jmp 0x47f65b
mov esi, dword [esp + 0xbf4]
mov ecx, dword [ebp + 0x18]
movzx eax, byte [ecx + 0x6e]
cmp eax, 0x62
ja case.0x47f672.1
movzx edx, byte [eax + 0x48071c]
jmp dword [edx*4 + 0x4806fc]
mov eax, dword [ecx + 0x64]
push esi
push 0
push eax
push edi
lea ecx, [esp + 0x140]
call fcn.0041f560
mov ecx, dword [ebp + 0x18]
mov al, byte [ecx + 0x6f]
cmp al, 0x20
je 0x47f6ae
cmp al, 0x43
je 0x47f6ae
cmp al, 0x50
je 0x47f6ae
cmp al, 0x53
mov dword [esp + 0xbb8], 0
jne 0x47f6b9
mov dword [esp + 0xbb8], 1
mov cl, byte [ecx + 0x6f]
cmp cl, 0x50
je 0x47f6ca
cmp cl, 0x53
je 0x47f6ca
xor eax, eax
jmp 0x47f6cf
mov eax, 2
cmp cl, 0x43
sete cl
or cl, al
add esi, 0x1c
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov byte [esp + 0xbbc], cl
mov ecx, dword [esi + 8]
mov dword [esp + 0x180], edx
mov edx, dword [esi + 0xc]
mov dword [esp + 0x18c], edx
mov edx, dword [esp + 0xbfc]
mov dword [esp + 0x188], ecx
mov ecx, dword [esp + 0xbf8]
mov dword [esp + 0xbec], ebp
push edx
add ebp, 0x70
mov dword [esp + 0x188], eax
mov eax, dword [esi + 0x10]
push ebp
mov dword [esp + 0xbc8], ecx
push 1
lea ecx, [esp + 0x13c]
mov dword [esp + 0x19c], eax
call fcn.00478f90
lea ecx, [esp + 0x130]
call fcn.004846b0
pop esi
pop edi
pop ebp
pop ebx
add esp, 0xbe0
ret 0xc
xor eax, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x1ac]
test eax, eax
mov esi, 0x7fffffff
mov dword [esp + 0x50], 0xffffffff
mov dword [esp + 0x54], esi
jne 0x47f78a
mov ecx, edi
call fcn.00486cc0
mov dword [esp + 0x60], eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax + 0x64]
mov edx, dword [esp + 0x60]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x50], edx
xor ecx, ecx
mov dword [esp + 0x38], 0
mov dword [esp + 0x54], esi
mov dword [esp + 0x48], 0x20000000
cmp byte [eax + 0x6f], 0x21
sete cl
lea edx, [esp + 0x114]
push edx
mov dword [esp + 0xb8], ecx
lea ecx, [esp + 0x38]
call fcn.00485650
lea eax, [esp + 0xb8]
mov ecx, 7
lea esi, [esp + 0x114]
lea edi, [esp + 0xb8]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0xbf4]
push eax
push ecx
mov edx, eax
push edx
call fcn.00437c90
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
mov dl, byte [eax + ecx]
add esp, 0xc
inc eax
mov dword [esp + 0x38], eax
mov cl, byte [eax + ecx]
inc eax
mov dword [esp + 0x38], eax
movzx eax, cl
mov ecx, dword [ebp + 4]
cmp word [ecx + 0x52], 0
movzx edx, dl
mov dword [esp + 0xb0], edx
mov dword [esp + 0xac], eax
mov dword [esp + 0x20], 0
je 0x47f857
mov edx, dword [ebp + 0x24]
mov eax, dword [edx + 4]
push ebx
push eax
call fcn.00475b50
add esp, 8
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x24]
xor esi, esi
mov dword [esp + 0x58], esi
mov eax, dword [eax + 4]
xor edi, edi
cmp eax, esi
mov dword [esp + 0x14], edi
je 0x47f875
mov eax, dword [eax + 0x3b4]
jmp 0x47f877
xor eax, eax
push eax
lea ecx, [esp + 0x90]
push ecx
call fcn.004380a0
mov edx, dword [ebp + 4]
mov eax, dword [edx + 0x18]
add esp, 8
xor ebx, ebx
cmp eax, esi
mov dword [esp + 0x78], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x24], esi
je 0x47f8d3
cmp dword [eax + 0xc], esi
jbe 0x47f8d3
mov ecx, dword [ebp + 0x24]
mov edx, dword [ecx + 4]
cmp dword [edx + 0xfc], esi
jne 0x47f8d3
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
mov dword [esp + 0x24], ecx
lea ecx, [esp + 0x58]
push ecx
push esi
push eax
mov ecx, ebp
mov dword [esp + 0x68], edx
call fcn.00479e80
mov dword [esp + 0x78], eax
push ebp
mov dword [esp + 0x34], 0x400
mov dword [esp + 0x30], 0x44800000
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x78], esi
mov dword [esp + 0x68], esi
mov dword [esp + 0x74], esi
call fcn.004601e0
add esp, 4
test al, al
je 0x47f930
mov edx, dword [ebp + 0x18]
mov ecx, dword [edx + 0x5c]
mov eax, dword [ecx + 0x1ac]
cmp eax, esi
jne 0x47f919
call fcn.00486cc0
cmp eax, 5
jle 0x47f930
mov eax, dword [ebp + 0x24]
mov ecx, dword [eax + 4]
cmp dword [ecx + 0xfc], esi
jne 0x47f930
mov al, 1
jmp 0x47f932
xor al, al
mov edx, dword [ebp + 4]
cmp word [edx + 0x52], si
jne 0x47fa41
test al, al
je 0x47fa41
mov eax, ebp
mov edx, 0x200
mov edi, edi
mov ecx, dword [eax + 4]
cmp dword [ecx + 4], esi
je 0x47f961
test dword [eax + 0x4c], edx
jne 0x47fa41
cmp word [ecx + 0x52], si
jne 0x47fa41
mov eax, dword [eax + 8]
cmp eax, esi
jne 0x47f950
lea eax, [esp + 0x13]
push eax
lea ecx, [esp + 0xe4]
push ecx
lea edx, [esp + 0xdc]
push edx
lea eax, [esp + 0xc4]
push eax
call fcn.004389f0
mov eax, dword [esp + 0xe4]
add esp, 0x10
cmp eax, esi
jle 0x47fa41
cmp dword [esp + 0xd8], esi
jle 0x47fa41
mov al, byte [esp + 0x13]
test al, al
jne 0x47fa41
push 0x88
call fcn.0052b380
mov esi, eax
add esp, 4
test esi, esi
je 0x47fa15
mov ecx, dword [ebp + 4]
mov eax, dword [ecx + 0x14]
mov edx, dword [esp + 0xbf4]
push edx
lea ecx, [esp + 0x118]
push ecx
lea edx, [esp + 0xc0]
push edx
push eax
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax + 0x5c]
mov edx, dword [ecx + 0xb4]
push ebp
push edx
call fcn.0045f830
add esp, 4
push eax
mov ecx, esi
call fcn.0045f460
mov dword [esp + 0x1c], eax
jmp 0x47fa1d
mov dword [esp + 0x1c], 0
mov ecx, dword [esp + 0xbf4]
lea eax, [esp + 0x58]
push eax
mov al, byte [ecx + 0x30]
mov ecx, dword [esp + 0x20]
test al, al
seta dl
push edx
push 0
push 0
call fcn.00460010
xor esi, esi
cmp edi, esi
jne 0x47fcf1
lea ecx, [esp + 0x34]
call fcn.004844e0
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov al, byte [ecx + eax]
movzx edi, al
inc ecx
cmp edi, esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x14], edi
je 0x47ffa2
and edi, 8
je 0x47fac1
mov edx, dword [esp + 0x34]
lea eax, [ecx + edx]
add ecx, 2
mov dword [esp + 0x38], ecx
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax]
push ecx
mov ecx, dword [esp + 0x70]
call fcn.004848b0
mov ebx, eax
cmp ebx, esi
mov dword [esp + 0x30], 0x400
mov dword [esp + 0x2c], 0x44800000
je 0x47fac1
cmp byte [ebx + 0x6f], 0x4b
jne 0x47fac1
mov dword [esp + 0x30], 0x5000
mov dword [esp + 0x2c], 0x46a00000
mov eax, dword [esp + 0x14]
and eax, 4
jne 0x47fadc
mov edx, dword [ebp + 0x24]
mov ecx, dword [edx + 4]
cmp dword [ecx + 0xfc], esi
je 0x47fba9
cmp eax, esi
je 0x47fb78
mov edx, dword [esp + 0xb4]
push edx
lea eax, [esp + 0xe8]
push eax
lea ecx, [esp + 0x3c]
call fcn.00484270
cmp dword [esp + 0x1c], esi
mov eax, dword [eax]
mov dword [esp + 0xa8], eax
je 0x47fb78
mov ecx, dword [esp + 0xbf4]
mov edx, dword [ecx + 0x1c]
add ecx, 0x1c
cmp edx, esi
mov dword [esp + 0x18], eax
je 0x47fb35
push eax
lea edx, [esp + 0xe0]
push edx
call fcn.00459a00
mov eax, dword [eax]
mov dword [esp + 0x18], eax
mov al, byte [esp + 0x1b]
cmp al, 0xff
je 0x47fb78
movzx ecx, byte [esp + 0x18]
movzx eax, al
inc eax
imul ecx, eax
sar ecx, 8
mov byte [esp + 0x18], cl
mov edx, dword [esp + 0x18]
shr edx, 8
movzx edx, dl
imul edx, eax
sar edx, 8
mov byte [esp + 0x19], dl
mov ecx, dword [esp + 0x18]
shr ecx, 0x10
movzx ecx, cl
imul ecx, eax
sar ecx, 8
mov byte [esp + 0x1a], cl
mov edx, dword [ebp + 4]
cmp word [edx + 0x52], si
jne 0x47fba9
mov ecx, dword [esp + 0xbf4]
lea eax, [esp + 0x58]
push eax
push ecx
lea edx, [esp + 0xb0]
push edx
mov ecx, ebp
call fcn.00479e80
cmp eax, esi
mov dword [esp + 0x20], eax
je case.0x47f672.1
mov dl, byte [esp + 0x14]
test dl, 1
je 0x47fbd7
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
add eax, ecx
add ecx, 2
mov dword [esp + 0x38], ecx
xor ecx, ecx
mov ch, byte [eax + 1]
movzx eax, byte [eax]
movsx ecx, cx
or ecx, eax
mov dword [esp + 0x9c], ecx
test dl, 2
je 0x47fc02
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
lea eax, [ecx + edx]
add ecx, 2
mov dword [esp + 0x38], ecx
xor ecx, ecx
mov ch, byte [eax + 1]
movzx eax, byte [eax]
movsx edx, cx
or edx, eax
mov dword [esp + 0xa0], edx
cmp edi, esi
je 0x47fccf
mov ecx, dword [ebp + 0x24]
mov eax, dword [ecx + 4]
cmp eax, esi
je 0x47fc8b
mov eax, dword [eax + 0x3b4]
cmp eax, esi
je 0x47fc8b
mov ecx, eax
call fcn.00497d50
test al, al
je 0x47fc8b
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
lea eax, [ecx + edx]
add ecx, 2
mov dword [esp + 0x38], ecx
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax]
mov dword [esp + 0xa4], 1
movzx edx, cx
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fld dword [0x53d7c8]
fdiv dword [esp + 0x2c]
fmulp st(1)
fstp dword [esp + 0x98]
mov eax, dword [esp + 0x98]
fld dword [esp + 0x98]
mov dword [esp + 0x8c], eax
fmul dword [esp + 0x2c]
call fcn.004ae0e0
jmp 0x47fccb
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
lea eax, [ecx + edx]
add ecx, 2
mov dword [esp + 0x38], ecx
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax]
mov eax, 0x10000
cdq
idiv dword [esp + 0x30]
mov dword [esp + 0xa4], esi
imul eax, ecx
mov dword [esp + 0x98], eax
mov dword [esp + 0x8c], eax
imul eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov al, byte [ecx + edx]
inc ecx
movzx edi, al
mov dword [esp + 0x38], ecx
lea ecx, [esp + 0x34]
mov dword [esp + 0x14], edi
call fcn.004844d0
cmp edi, esi
jle 0x47ffa2
mov eax, dword [esp + 0xb0]
push eax
lea ecx, [esp + 0x38]
call fcn.00484510
mov ecx, dword [esp + 0xac]
push ecx
lea ecx, [esp + 0x38]
mov esi, eax
call fcn.004845a0
test ebx, ebx
mov edi, eax
mov dword [esp + 0x68], edi
je 0x47ff82
mov ax, word [ebx + 0x2e]
test ax, ax
je 0x47fd40
movzx edx, ax
cmp esi, edx
jl 0x47fd40
xor edi, edi
jmp 0x47ff82
lea eax, [esp + 0xf8]
push eax
lea ecx, [esp + 0xbc]
push ecx
lea edx, [esp + 0x94]
push edx
call fcn.00437c90
mov eax, dword [esp + 0x30]
add esp, 0xc
test eax, eax
jbe 0x47fdd2
mov ecx, dword [esp + 0x5c]
dec eax
mov dword [esp + 0x24], eax
mov al, byte [ecx]
inc ecx
test al, al
mov dword [esp + 0x5c], ecx
je 0x47fdd2
mov ecx, dword [esp + 0x60]
lea eax, [esp + 0xe8]
push eax
push ecx
push esi
push ebx
mov ecx, ebp
call fcn.00475c30
test al, al
je 0x47fdd2
lea edx, [esp + 0xe8]
push edx
push 0xffffffffffffffe0
call fcn.00438d80
mov edx, dword [esp + 0x80]
push 0
lea eax, [ebp + 0x44]
push eax
mov eax, dword [ebp + 0x24]
mov ecx, dword [eax + 4]
push ecx
push edx
lea eax, [esp + 0x110]
push eax
lea ecx, [esp + 0x104]
push ecx
call fcn.00477f60
add esp, 0x20
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x47fec2
fild dword [esp + 0x28]
fmul dword [eax + 0x50]
fcomp dword [0x5415b0]
fnstsw ax
test ah, 0x41
jp 0x47fec2
cmp dword [esp + 0x64], ebx
je 0x47fe6b
test byte [ebx + 0x30], 8
je 0x47fe28
movzx edx, word [ebx + 0x2e]
mov eax, dword [ebx + 0x64]
xor ecx, ecx
mov ch, byte [eax + edx*4 + 3]
lea eax, [eax + edx*4]
movzx edx, byte [eax + 1]
mov cl, byte [eax + 2]
movzx eax, byte [eax]
shl ecx, 8
or ecx, edx
shl ecx, 8
or ecx, eax
jmp 0x47fe39
movzx ecx, word [ebx + 0x2e]
mov edx, dword [ebx + 0x64]
lea eax, [edx + ecx*2]
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax]
mov edx, dword [ebp + 0x18]
mov eax, dword [edx + 0x5c]
mov edi, ecx
mov ecx, dword [eax + 0xb4]
push ecx
call fcn.0045f830
push ebx
call fcn.0045ef70
mov dword [esp + 0x7c], eax
mov eax, dword [ebx + 0x64]
add esp, 8
add eax, edi
mov edi, dword [esp + 0x68]
mov dword [esp + 0x64], ebx
mov dword [esp + 0x70], eax
fild dword [esp + 0x9c]
mov eax, dword [esp + 0x28]
push 0
lea edx, [esp + 0x80]
push edx
fstp dword [esp + 0x84]
fild dword [esp + 0xa8]
mov edx, dword [esp + 0x78]
push eax
xor eax, eax
fstp dword [esp + 0x8c]
mov ax, word [edx + esi*2]
mov edx, dword [esp + 0x70]
lea ecx, [esp + 0x24]
push ecx
mov ecx, dword [esp + 0x84]
push esi
push eax
push ecx
mov ecx, dword [esp + 0x38]
push edx
call fcn.00460c00
jmp 0x47ff82
mov al, byte [ebx + 0x30]
xor ecx, ecx
test al, 8
mov eax, dword [ebx + 0x64]
je 0x47feeb
mov ch, byte [eax + esi*4 + 3]
movzx edx, byte [eax + esi*4 + 1]
mov cl, byte [eax + esi*4 + 2]
shl ecx, 8
or ecx, edx
movzx edx, byte [eax + esi*4]
shl ecx, 8
or ecx, edx
jmp 0x47fef2
mov ch, byte [eax + esi*2 + 1]
mov cl, byte [eax + esi*2]
lea edx, [esp + 0xf8]
push edx
push ecx
push eax
mov eax, dword [esp + 0x78]
push eax
lea ecx, [esp + 0x140]
call fcn.0041f560
mov ecx, dword [esp + 0x1a8]
mov eax, 1
mov dword [esp + 0xbe8], eax
mov dword [esp + 0xbec], ebp
mov dword [ecx], 0
mov edx, dword [esp + 0x1ac]
mov dword [edx], 0
mov ecx, dword [esp + 0x1ac]
mov word [ecx + 4], 0
mov edx, dword [esp + 0x1a8]
mov ecx, dword [esp + 0x20]
mov dword [edx + 4], ecx
mov edx, dword [esp + 0xbfc]
mov dword [esp + 0x1a4], eax
push edx
lea eax, [ebp + 0x70]
push eax
push 0
lea ecx, [esp + 0x13c]
call fcn.00478f90
lea ecx, [esp + 0x130]
call fcn.004846b0
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x14]
add ecx, edi
dec eax
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x14], eax
mov edi, eax
jmp 0x47fa3f
mov eax, dword [esp + 0x1c]
cmp eax, esi
je 0x47ffb2
mov ecx, eax
mov edx, dword [ecx]
push 1
call dword [edx]
lea ecx, [esp + 0x34]
call fcn.004844e0
pop esi
pop edi
pop ebp
pop ebx
add esp, 0xbe0
ret 0xc
mov eax, dword [ecx + 0x64]
push esi
push 0
push eax
push edi
lea ecx, [esp + 0x140]
call fcn.0041f560
mov ecx, dword [ebp + 0x18]
mov al, byte [ecx + 0x6f]
cmp al, 0x2e
je 0x47fffd
cmp al, 0x44
je 0x47fffd
cmp al, 0x51
je 0x47fffd
cmp al, 0x54
mov dword [esp + 0xbb8], 0
jne 0x480008
mov dword [esp + 0xbb8], 1
mov cl, byte [ecx + 0x6f]
cmp cl, 0x51
je 0x480019
cmp cl, 0x54
je 0x480019
xor eax, eax
jmp 0x48001e
mov eax, 2
cmp cl, 0x44
sete cl
or cl, al
add esi, 0x1c
mov edx, dword [esi]
mov eax, dword [esi + 4]
mov byte [esp + 0xbbc], cl
mov ecx, dword [esi + 8]
mov dword [esp + 0x180], edx
mov edx, dword [esi + 0xc]
mov dword [esp + 0x184], eax
mov eax, dword [esi + 0x10]
mov dword [esp + 0x188], ecx
mov ecx, dword [ebp + 4]
mov dword [esp + 0x190], eax
mov eax, dword [esp + 0xbf8]
mov dword [esp + 0x18c], edx
movzx edx, word [ecx + 0x56]
mov dword [esp + 0xbec], ebp
add ebp, 0x70
push ebp
lea ecx, [esp + 0x134]
mov dword [esp + 0x198], edx
mov dword [esp + 0xbc4], eax
call fcn.00479580
lea ecx, [esp + 0x130]
call fcn.004846b0
pop esi
pop edi
pop ebp
pop ebx
add esp, 0xbe0
ret 0xc
mov esi, dword [esp + 0xbf4]
mov edx, dword [ebp + 4]
lea ecx, [esi + 0x1c]
push ecx
mov ecx, dword [edx + 0x14]
call fcn.00475b20
mov eax, dword [ebp + 4]
mov edi, dword [eax + 0x14]
add esi, 0x30
add edi, 0x35c
mov ecx, 0x2b
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp + 4]
mov eax, dword [ecx + 0x14]
push eax
call fcn.004d0910
add esp, 4
test al, al
je case.0x47f672.1
mov edx, dword [ebp + 4]
mov ecx, dword [edx + 0x14]
push 0
push 0
push 0
call fcn.0042b690
pop esi
pop edi
pop ebp
pop ebx
add esp, 0xbe0
ret 0xc
cmp dword [ebx], 0
jne case.0x47f672.1
mov esi, dword [ebp + 4]
mov eax, dword [esi + 8]
test eax, eax
je case.0x47f672.1
mov al, byte [ecx + 0xc]
cmp al, 2
jb 0x48025b
cmp al, 5
ja 0x48025b
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x48025b
mov ax, word [ecx + 0xa]
cmp ax, 0xffff
jne 0x480153
movzx eax, word [esi + 0x56]
jmp 0x480156
movzx eax, ax
movzx edi, word [ecx + 8]
cdq
idiv edi
mov ebx, edx
test ebx, ebx
mov dword [esp + 0x14], ebx
jl 0x48025b
mov eax, dword [ecx]
lea eax, [eax + ebx*4]
cmp dword [eax], 0
jne 0x480186
dec ebx
sub eax, 4
test ebx, ebx
jge 0x480170
mov dword [esp + 0x14], ebx
jmp 0x48025b
test ebx, ebx
mov dword [esp + 0x14], ebx
jl 0x48025b
movzx ecx, word [esi + 0x50]
cmp ebx, ecx
je 0x48025b
mov esi, ebx
mov ecx, dword [ebp + 4]
movzx eax, word [ecx + 0x50]
lea edi, [esi - 1]
cmp eax, edi
jl 0x4801b2
cmp ebx, eax
jg 0x4801e6
mov eax, dword [ebp + 0x18]
mov edx, dword [eax]
mov edx, dword [edx + esi*4]
test edx, edx
mov eax, dword [eax + 4]
mov eax, dword [eax + esi*4]
je 0x4801db
test eax, eax
je 0x4801db
mov ecx, dword [ecx + 0x4c]
mov ebx, dword [ecx]
push eax
push edx
push ebp
call dword [ebx + 0x10]
test al, al
mov ebx, dword [esp + 0x14]
jne 0x480218
mov esi, edi
test esi, esi
jge 0x4801a0
jmp 0x48025b
mov ecx, dword [ebp + 4]
movzx esi, word [ecx + 0x50]
mov eax, dword [ebp + 0x18]
movzx ecx, word [eax + 8]
inc esi
cmp esi, ecx
jge 0x480216
mov edx, dword [eax]
lea eax, [edx + esi*4]
mov edi, edi
cmp dword [eax], 0
jne 0x480214
mov edx, dword [ebp + 0x18]
movzx edx, word [edx + 8]
inc esi
add eax, 4
cmp esi, edx
jl 0x480200
cmp esi, ecx
je 0x48025b
test esi, esi
jl 0x48025b
cmp esi, ebx
jg 0x480249
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + esi*4]
test edx, edx
mov eax, dword [eax + 4]
mov eax, dword [eax + esi*4]
je 0x480244
test eax, eax
je 0x480244
mov ecx, dword [ebp + 4]
mov ecx, dword [ecx + 0x4c]
mov edi, dword [ecx]
push eax
push edx
push ebp
call dword [edi + 0xc]
inc esi
cmp esi, ebx
jle 0x480220
push ebx
mov ecx, ebp
call fcn.0047ece0
mov edx, dword [ebp + 4]
mov eax, dword [edx + 8]
mov byte [eax + 0x28], 0
mov ecx, dword [ebp + 4]
mov esi, dword [ecx + 8]
mov ecx, esi
mov dword [esp + 0x20], esi
call fcn.00439330
test eax, eax
jne 0x48027a
cmp dword [esi + 0xc], 6
jne case.0x47f672.1
cmp byte [esi + 0x28], 1
je case.0x47f672.1
push 0x3c
call fcn.0052b380
mov esi, eax
add esp, 4
test esi, esi
je case.0x47f672.1
mov ecx, ebp
call fcn.00478cf0
push eax
mov ecx, esi
call fcn.00452770
mov ebx, eax
xor esi, esi
cmp ebx, esi
je case.0x47f672.1
mov edx, dword [ebp + 4]
mov dword [ebp + 0x48], ebx
cmp word [edx + 0x52], si
mov ecx, ebx
je 0x4802cd
push 5
call fcn.00452870
jmp 0x4803fe
push 1
call fcn.00452870
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0x14]
mov dword [esp + 0x80], ecx
push 1
mov ecx, ebx
mov dword [esp + 0x88], esi
mov dword [esp + 0x80], esi
mov dword [esp + 0x8c], edx
call fcn.00452870
mov eax, dword [ebp + 0x24]
mov eax, dword [eax + 4]
cmp eax, esi
je 0x480315
mov eax, dword [eax + 0x3b4]
jmp 0x480317
xor eax, eax
mov ecx, dword [ebx + 0x38]
mov edx, dword [ebp + 0x18]
push eax
add ecx, 8
push ecx
add edx, 0x44
push edx
lea eax, [esp + 0x88]
push eax
call fcn.00438420
mov esi, dword [ebx + 0x38]
add esi, 8
mov ecx, 7
lea edi, [esp + 0x108]
rep movsd dword es:[edi], dword [esi]
add esp, 0x10
mov ecx, ebp
call fcn.00478cf0
mov ecx, dword [ebp + 0x24]
mov edx, dword [ecx + 4]
mov ecx, dword [edx + 0x3b4]
mov edx, dword [ebx + 0x38]
mov eax, dword [eax]
push ecx
mov ecx, dword [esp + 0xbf8]
add edx, 0x24
push edx
push eax
lea eax, [esp + 0x104]
push eax
push ecx
call fcn.00475e00
mov edx, dword [ebx + 0x38]
mov eax, dword [esp + 0x34]
mov dword [edx + 4], eax
mov ecx, dword [ebx + 0x38]
mov word [ecx], 0x41
mov edx, dword [ebp + 0x18]
mov al, byte [edx + 0xd]
add esp, 0x14
test al, 1
jne 0x4803a2
mov eax, dword [ebx + 0x38]
or byte [eax], 2
mov eax, dword [ebx + 0x38]
mov ecx, dword [esp + 0xbf4]
add ecx, 0x1c
add eax, 0x40
mov edx, ecx
mov esi, dword [edx]
mov dword [eax], esi
mov esi, dword [edx + 4]
mov dword [eax + 4], esi
mov esi, dword [edx + 8]
mov dword [eax + 8], esi
mov esi, dword [edx + 0xc]
mov dword [eax + 0xc], esi
mov edx, dword [edx + 0x10]
mov dword [eax + 0x10], edx
call fcn.0043de90
mov ecx, dword [esp + 0x20]
or al, byte [ecx + 0x20]
mov byte [ebx + 0x24], al
mov eax, dword [ebx + 0x38]
cmp dword [eax + 0x3c], 1
jne 0x4803f4
add eax, 0x24
push eax
call fcn.00437660
add esp, 4
mov edx, dword [ebx + 0x38]
mov dword [edx + 0x3c], 2
mov ecx, ebx
call fcn.0045d3c0
push 0
lea eax, [ebp + 0x44]
push eax
mov eax, dword [ebp + 0x24]
mov ecx, dword [eax + 4]
push ecx
push ebx
mov edx, dword [esp + 0xc04]
mov eax, dword [ebp + 0x18]
push edx
add eax, 0x44
push eax
call fcn.00477f60
add esp, 0x18
pop esi
pop edi
pop ebp
pop ebx
add esp, 0xbe0
ret 0xc
mov ecx, dword [ecx]
mov eax, dword [ecx]
test eax, eax
je case.0x47f672.1
mov ecx, dword [eax + 4]
test ecx, ecx
je case.0x47f672.1
push 0x3c
call fcn.0052b380
mov esi, eax
add esp, 4
test esi, esi
je case.0x47f672.1
mov ecx, ebp
call fcn.00478cf0
push eax
mov ecx, esi
call fcn.00452770
mov esi, eax
test esi, esi
je case.0x47f672.1
mov edx, dword [ebp + 4]
mov dword [ebx], esi
cmp word [edx + 0x52], 0
mov ecx, esi
je 0x480495
push 5
call fcn.00452870
jmp 0x4806ad
push 1
call fcn.00452870
mov ecx, ebp
call fcn.00478cf0
mov edi, dword [eax]
mov ebx, dword [esp + 0xbf4]
push ebx
mov dword [esp + 0x6c], edi
call fcn.004385a0
add esp, 4
test eax, eax
je 0x480530
fild dword [esp + 0x68]
sub esp, 0x10
fmul qword [0x53dd70]
fstp qword [esp + 0x8c]
fld qword [0x540808]
fstp qword [esp + 8]
fld qword [esp + 0x8c]
fstp qword [esp]
push ebx
call fcn.004374e0
push ecx
fstp qword [esp]
call fcn.00436b60
add esp, 0x18
test eax, eax
je 0x480530
fld qword [0x540808]
sub esp, 0x10
fstp qword [esp + 8]
fld qword [esp + 0x8c]
fstp qword [esp]
push ebx
call fcn.00437540
push ecx
fstp qword [esp]
call fcn.00436b60
add esp, 0x18
test eax, eax
je 0x480530
mov cl, 1
jmp 0x480532
xor cl, cl
cmp edi, 1
mov byte [esp + 0x13], cl
jle 0x480575
mov eax, dword [ebp + 0x18]
mov edx, dword [eax]
mov eax, dword [edx + 0x44]
dec eax
je 0x480551
dec eax
jne 0x480575
test cl, cl
je 0x480611
mov eax, edi
cdq
sub eax, edx
mov edx, dword [ebx + 0x10]
sar eax, 1
add edx, eax
lea ecx, [edi - 1]
not ecx
and edx, ecx
mov dword [ebx + 0x10], edx
mov edx, dword [ebx + 0x14]
add edx, eax
and edx, ecx
mov cl, byte [esp + 0x13]
mov dword [ebx + 0x14], edx
test cl, cl
je 0x480611
mov eax, dword [ebp + 0x24]
mov eax, dword [eax + 4]
test eax, eax
je 0x48058f
mov eax, dword [eax + 0x3b4]
jmp 0x480591
xor eax, eax
push eax
lea ecx, [esp + 0xbc]
push ecx
call fcn.004380a0
mov eax, dword [ebx + 0x10]
cdq
idiv edi
add esp, 8
shl eax, 0x10
mov dword [esp + 0xc8], eax
mov eax, dword [ebx + 0x14]
cdq
idiv edi
mov edx, dword [ebp + 0x24]
shl eax, 0x10
mov dword [esp + 0xcc], eax
mov eax, dword [edx + 4]
test eax, eax
je 0x4805d4
mov eax, dword [eax + 0x3b4]
jmp 0x4805d6
xor eax, eax
push eax
mov eax, dword [esi + 0x38]
add eax, 0x24
push eax
lea ecx, [esp + 0xc0]
push ecx
call fcn.00438fa0
mov eax, dword [esi + 0x38]
mov ecx, dword [eax + 0x3c]
add esp, 0xc
cmp ecx, 1
jne 0x480605
add eax, 0x24
push eax
call fcn.00437660
add esp, 4
mov edx, dword [esi + 0x38]
mov dword [edx + 0x3c], 2
jmp 0x48064e
lea eax, [esp + 0xb8]
push eax
push 0x140000
push 0x140000
call fcn.004381e0
mov ecx, dword [ebp + 0x24]
mov edx, dword [ecx + 4]
mov eax, dword [edx + 0x3b4]
mov ecx, dword [esi + 0x38]
push eax
add ecx, 0x24
push ecx
push edi
lea edx, [esp + 0xd0]
push edx
push ebx
call fcn.00475e00
add esp, 0x20
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
mov edx, dword [esi + 0x38]
add ecx, 0x18
mov dword [edx + 4], ecx
mov eax, dword [esi + 0x38]
mov word [eax], 0x41
mov ecx, dword [ebp + 0x18]
mov edx, dword [ecx]
mov al, byte [edx + 0x48]
test al, al
jne 0x480676
mov eax, dword [esi + 0x38]
or byte [eax], 2
mov eax, dword [esi + 0x38]
lea ecx, [ebx + 0x1c]
add eax, 0x40
mov edx, ecx
mov edi, dword [edx]
mov dword [eax], edi
mov edi, dword [edx + 4]
mov dword [eax + 4], edi
mov edi, dword [edx + 8]
mov dword [eax + 8], edi
mov edi, dword [edx + 0xc]
mov dword [eax + 0xc], edi
mov edx, dword [edx + 0x10]
mov dword [eax + 0x10], edx
call fcn.0043de90
mov ecx, dword [ebp + 0x18]
mov edx, dword [ecx]
or al, byte [edx + 0x38]
mov byte [esi + 0x24], al
mov ecx, esi
call fcn.0045d3c0
push 0
lea eax, [ebp + 0x44]
push eax
mov eax, dword [ebp + 0x24]
mov ecx, dword [eax + 4]
push ecx
push esi
jmp 0x480413
mov ecx, dword [ebp + 4]
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je case.0x47f672.1
mov edi, dword [esp + 0xbfc]
mov edx, dword [esp + 0xbf8]
test edi, edi
setne al
push edx
push eax
push esi
call fcn.0047ca30
pop esi
pop edi
pop ebp
pop ebx
add esp, 0xbe0
ret 0xc