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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xec
mov eax, dword [esp + 0x108]
mov dword [esp + 0xdc], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xbc], 0
mov edi, dword [esp + 0x100]
mov eax, dword [eax]
mov dword [esp + 0xcc], 0
mov dword [esp + 0x44], eax
mov dword [esp + 0xd0], edi
mov ecx, dword [esp + 0xd0]
cmp byte [ecx], 0x2d
jbe 0x53f494
mov dword [esp + 0x60], 0
mov dword [esp + 0x54], 0
cmp byte [ecx], 0x30
je 0x53f562
mov edx, dword [esp + 0x108]
mov dword [esp + 0x68], ecx
mov edx, dword [edx + 0x10]
mov dword [esp + 0x64], edx
movsx ebx, byte [ecx]
cmp ebx, 0x2f
jle 0x53f5b9
cmp ebx, 0x39
jg 0x53f5b9
xor esi, esi
xor ebp, ebp
mov dword [esp + 0x7c], 0
jmp 0x53f47e
cmp esi, 0xf
jg 0x53f460
lea eax, [ebp + ebp*4]
lea ebp, [ebx + eax*2 - 0x30]
lea esi, [esi]
inc ecx
inc esi
mov dword [esp + 0xd0], ecx
movsx ebx, byte [ecx]
cmp ebx, 0x2f
jle 0x53f5c5
cmp ebx, 0x39
jg 0x53f5c5
cmp esi, 8
jg 0x53f450
mov edx, dword [esp + 0x7c]
lea eax, [edx + edx*4]
lea eax, [ebx + eax*2 - 0x30]
mov dword [esp + 0x7c], eax
jmp 0x53f460
xor eax, eax
mov al, byte [ecx]
jmp dword [eax*4 + 0x5b2fec]
mov dword [esp + 0xdc], 6
mov dword [esp + 0xd0], edi
mov dword [esp + 0x60], 0
mov ebx, dword [esp + 0xcc]
mov edi, dword [esp + 0x104]
test edi, edi
je 0x53f4db
mov ecx, dword [esp + 0x104]
mov eax, dword [esp + 0xd0]
mov dword [ecx], eax
mov esi, dword [esp + 0x60]
test esi, esi
jne 0x53f520
test ebx, ebx
je 0x53f50c
push edx
push ebx
mov eax, dword [esp + 0x4c]
push eax
mov eax, dword [esp + 0x11c]
push eax
call fcn.00543510
pop eax
mov eax, dword [esp + 0xd8]
push eax
call fcn.00542bb0
add esp, 0x10
mov eax, dword [esp + 0xdc]
add esp, 0xec
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 0xdc]
or ecx, 8
mov dword [esp + 0xdc], ecx
jmp 0x53f4e3
mov dword [esp + 0x60], 1
lea eax, [ecx + 1]
mov dword [esp + 0xd0], eax
cmp byte [ecx + 1], 0
je case.0x53f498.0
mov ecx, eax
mov dword [esp + 0x54], 0
cmp byte [ecx], 0x30
jne 0x53f41a
mov al, byte [ecx + 1]
cmp al, 0x58
je 0x5401bd
cmp al, 0x78
jne 0x53f578
jmp 0x5401bd
mov ecx, edx
lea edx, [ecx + 1]
mov dword [esp + 0xd0], edx
mov al, byte [ecx + 1]
cmp al, 0x30
je 0x53f576
test al, al
je 0x53f4b9
mov ecx, edx
mov dword [esp + 0x54], 1
jmp 0x53f41a
mov dword [esp + 0x60], 0
jmp 0x53f53b
lea eax, [ecx + 1]
mov dword [esp + 0xd0], eax
jmp 0x53f3f1
xor esi, esi
mov dword [esp + 0x7c], 0
xor ebp, ebp
call sub.msvcrt.dll_localeconv
mov eax, dword [eax]
movsx eax, byte [eax]
cmp eax, ebx
je 0x53fad3
mov dword [esp + 0x48], esi
mov dword [esp + 0x2c], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
cmp ebx, 0x65
je 0x53f8e0
cmp ebx, 0x45
je 0x53f8e0
xor eax, eax
mov edx, dword [esp + 0x48]
test edx, edx
je 0x53f83f
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x108]
sub eax, ebx
mov dword [esp + 0xdc], 1
mov dword [esp + 0x9c], eax
mov eax, dword [ecx + 0xc]
and eax, 3
cmp eax, 2
je 0x540865
cmp eax, 3
je 0x540857
test eax, eax
sete al
and eax, 0xff
mov dword [esp + 0x58], eax
mov edi, esi
test esi, esi
jne 0x53f662
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x48]
cmp ebx, 0x10
jle 0x53f670
mov ebx, 0x10
mov eax, dword [esp + 0x7c]
xor edx, edx
push edx
push eax
fild qword [esp]
add esp, 8
cmp ebx, 9
fst qword [esp + 0xb8]
jle 0x53fb8f
fmul qword [ebx*8 + 0x5b31f8]
xor edx, edx
push edx
push ebp
fild qword [esp]
faddp st(1)
add esp, 8
fstp qword [esp + 0xb8]
cmp dword [esp + 0x44], 0x35
jg 0x53f6ba
cmp dword [esp + 0x48], 0xf
jle 0x53f94a
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0x48]
sub eax, ebx
add eax, edx
cmp eax, 0
jle 0x5408f8
mov edx, eax
and edx, 0xf
je 0x53f6ee
fld qword [esp + 0xb8]
fmul qword [edx*8 + 0x5b3240]
fstp qword [esp + 0xb8]
and eax, 0xfffffff0
jne 0x54007d
xor ebx, ebx
lea eax, [esp + 0xd8]
push eax
lea eax, [esp + 0xd8]
push eax
mov eax, dword [esp + 0xc4]
push eax
mov ebp, dword [esp + 0xc4]
push ebp
call fcn.005433c0
mov esi, dword [esp + 0xe4]
mov edx, dword [esp + 0xe8]
add esi, ebx
mov ecx, dword [esp + 0x54]
mov ebx, edx
mov dword [esp + 0xdc], eax
sub ebx, ecx
mov dword [esp + 0xe4], esi
add esp, 0x10
test ebx, ebx
jle 0x53f776
push ebp
push ebp
push ebx
push eax
call fcn.00544180
mov esi, dword [esp + 0xe4]
mov edx, dword [esp + 0x54]
add esi, ebx
mov dword [esp + 0xe8], edx
mov dword [esp + 0xe4], esi
add esp, 0x10
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0xd4]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x30], 0
lea esi, [edx + ecx]
sub esi, ebx
mov ebx, dword [esp + 0x108]
mov eax, dword [ebx + 8]
inc eax
cmp esi, eax
jg 0x53ff72
mov eax, dword [ebx + 4]
mov dword [esp + 0x34], eax
cmp esi, eax
jge 0x5408ef
mov ebx, ecx
mov eax, dword [esp + 0x34]
sub ebx, eax
cmp ebx, 0
jle 0x540164
push eax
push eax
push ebx
mov eax, dword [esp + 0xd8]
push eax
call fcn.00542e00
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0xe8]
add eax, ebx
mov dword [esp + 0xe8], eax
add esp, 0x10
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x64]
mov dword [esp + 0xd4], ebx
test ebp, ebp
je 0x53fb96
lea eax, [esi + 1]
cmp ebx, eax
jle 0x53fb96
mov ebx, dword [esp + 0xcc]
mov ecx, dword [esp + 0x10c]
mov edx, dword [esp + 0x34]
mov dword [ebx + 0x10], 0
mov dword [ebx + 0x14], 0
mov dword [esp + 0xdc], 0x50
mov dword [ecx], edx
jmp 0x53ffbd
mov edx, dword [esp + 0x50]
or edx, dword [esp + 0x54]
jne 0x53f4b9
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x53f92c
cmp ebx, 0x4e
je 0x540a47
jg 0x540a35
cmp ebx, 0x49
jne 0x53f92c
push eax
push eax
push 0x5b2fe0
lea ebx, [esp + 0xdc]
push ebx
call fcn.005434c0
add esp, 0x10
test eax, eax
je 0x53f92c
mov eax, dword [esp + 0xd0]
dec eax
mov dword [esp + 0xd0], eax
push eax
push eax
push str.inity
push ebx
call fcn.005434c0
add esp, 0x10
cmp eax, 1
mov edx, dword [esp + 0xd0]
mov dword [esp + 0xdc], 3
adc edx, 0
mov dword [esp + 0x30], 0
mov dword [esp + 0xd0], edx
jmp 0x53ff96
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x50]
or eax, edx
or eax, dword [esp + 0x54]
je 0x53f92c
mov edi, dword [esp + 0xd0]
lea edx, [edi + 1]
mov dword [esp + 0xd0], edx
mov al, byte [edi + 1]
cmp al, 0x2b
je 0x53fa07
mov dword [esp + 0x38], 1
cmp al, 0x2d
je 0x53fa0f
movsx ebx, al
mov dword [esp + 0x38], 0
jmp 0x53fa1d
mov ebx, dword [esp + 0xcc]
mov dword [esp + 0xdc], 6
mov dword [esp + 0xd0], edi
jmp 0x53f4c0
cmp dword [esp + 0x9c], 0
je 0x540196
jle 0x540ac4
cmp dword [esp + 0x9c], 0x16
jg 0x5409d8
fld qword [esp + 0xb8]
mov eax, dword [esp + 0x9c]
fst qword [esp + 0xb0]
mov ecx, dword [eax*4 + 0x5b30c0]
mov eax, dword [esp + 0xb0]
test eax, eax
je 0x540af0
mov edx, 0x35
bsf eax, eax
sub edx, eax
mov eax, dword [esp + 0x9c]
fmul qword [eax*8 + 0x5b3240]
fst qword [esp + 0xb8]
sub esp, 0xc
lea eax, [esp + 0xe8]
push eax
mov eax, dword [esp + 0x68]
push eax
lea eax, [edx + ecx]
cmp eax, 0x35
setle al
and eax, 0xff
push eax
sub esp, 8
fstp qword [esp]
mov ecx, dword [esp + 0x130]
mov edx, dword [esp + 0x12c]
mov eax, dword [esp + 0x128]
call fcn.0053f070
add esp, 0x20
test eax, eax
jne 0x53f4b9
xor edx, edx
jmp 0x53f6c1
mov dword [esp + 0x38], 0
lea eax, [edx + 1]
mov dword [esp + 0xd0], eax
movsx ebx, byte [edx + 1]
lea eax, [ebx - 0x30]
cmp eax, 9
ja 0x54006f
cmp ebx, 0x30
jne 0x53fa49
mov eax, dword [esp + 0xd0]
lea edx, [eax + 1]
mov dword [esp + 0xd0], edx
mov al, byte [eax + 1]
movsx ebx, al
cmp al, 0x30
je 0x53fa2e
lea eax, [ebx - 0x31]
cmp eax, 8
ja 0x53f605
mov edx, dword [esp + 0xd0]
lea ecx, [ebx - 0x30]
mov dword [esp + 0x6c], edx
inc edx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0xd0], edx
movsx ebx, byte [eax + 1]
cmp ebx, 0x2f
jg 0x53faa1
jmp 0x53faa6
lea eax, [ecx + ecx*4]
lea ecx, [ebx + eax*2 - 0x30]
mov eax, dword [esp + 0xd0]
lea edx, [eax + 1]
mov dword [esp + 0xd0], edx
movsx ebx, byte [eax + 1]
cmp ebx, 0x2f
jle 0x53faa6
cmp ebx, 0x39
jle 0x53fa80
mov eax, dword [esp + 0x6c]
sub edx, eax
cmp edx, 8
jg 0x53fabb
mov eax, ecx
cmp ecx, 0x4e1f
jle 0x53fac0
mov eax, 0x4e1f
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x53f607
neg eax
jmp 0x53f607
mov edx, dword [esp + 0xd0]
test esi, esi
lea eax, [edx + 1]
mov dword [esp + 0xd0], eax
mov al, byte [edx + 1]
movsx ebx, al
je 0x540004
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
lea eax, [ebx - 0x30]
mov dword [esp + 0x2c], 1
mov dword [esp + 0x14], eax
cmp eax, 9
ja 0x53f5f3
mov ecx, dword [esp + 0x50]
inc ecx
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0xd0]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x5408aa
mov edx, dword [esp + 0x50]
mov ebx, dword [esp + 0x4c]
add ebx, edx
mov eax, dword [esp + 0x48]
mov dword [esp + 0x4c], ebx
dec edx
jle 0x540880
mov ebx, eax
mov edx, 1
jmp 0x53fb73
cmp ebx, 0x10
jg 0x53fb68
lea eax, [ebp + ebp*4]
lea ebp, [eax + eax]
inc edx
cmp edx, dword [esp + 0x50]
je 0x540874
inc ebx
lea eax, [ebx - 1]
cmp eax, 8
jg 0x53fb5c
mov eax, dword [esp + 0x7c]
lea eax, [eax + eax*4]
mov dword [esp + 4], eax
add eax, eax
mov dword [esp + 0x7c], eax
jmp 0x53fb68
fstp st(0)
jmp 0x53f6a8
mov eax, dword [esp + 0x34]
mov dword [esp + 0x30], 1
mov dword [esp + 0x5c], eax
mov ecx, dword [esp + 0x7c]
push ecx
mov edx, dword [esp + 0x4c]
push edx
push edi
mov eax, dword [esp + 0x74]
push eax
call fcn.00543660
mov edx, dword [esp + 0x54]
mov dword [esp + 0x98], eax
inc edx
mov dword [esp + 0x2c], 0
mov dword [esp + 0xa0], edx
add esp, 0x10
lea ecx, [eax + 0xc]
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0x10], ecx
neg ebx
mov dword [esp + 0xc], ebx
lea esi, [esi]
sub esp, 0xc
mov eax, dword [esp + 0x94]
mov eax, dword [eax + 4]
push eax
call fcn.00542bf0
mov edx, dword [esp + 0x98]
mov dword [esp + 0x94], eax
cld
mov ecx, dword [edx + 0x10]
mov esi, dword [esp + 0x20]
lea edi, [eax + 0xc]
lea ecx, [ecx*4 + 8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
pop eax
mov eax, dword [esp + 0xd8]
mov eax, dword [eax + 4]
push eax
call fcn.00542bf0
mov esi, dword [esp + 0xdc]
mov dword [esp + 0x90], eax
cld
mov ecx, dword [esi + 0x10]
lea edi, [eax + 0xc]
add esi, 0xc
lea ecx, [ecx*4 + 8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0xe8]
sub ecx, ebx
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x38], ecx
add ebx, eax
mov dword [esp], 1
call fcn.00543070
mov dword [esp + 0x9c], eax
add esp, 0x10
mov eax, dword [esp + 0x9c]
test eax, eax
js 0x54068f
mov eax, dword [esp + 0x9c]
xor ecx, ecx
mov dword [esp + 0x24], eax
mov edi, eax
mov dword [esp + 0x20], 0
test ebx, ebx
js 0x540688
add ecx, ebx
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x44]
add edx, ebx
mov eax, dword [esp + 0x90]
mov ebp, dword [esp + 0x28]
sub edx, esi
sub eax, ebp
cmp dword [esp + 0x34], edx
jle 0x53fce4
mov ebx, dword [esp + 0x34]
sub eax, ebx
add eax, edx
lea esi, [eax + ecx]
lea edi, [eax + edi]
cmp esi, edi
mov eax, esi
jle 0x53fcf2
mov eax, edi
cmp eax, ecx
jle 0x53fcf8
mov eax, ecx
mov ebp, ecx
test eax, eax
jle 0x53fd04
sub esi, eax
sub edi, eax
sub ebp, eax
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x53fd51
push eax
push eax
mov eax, dword [esp + 0x28]
push eax
mov eax, dword [esp + 0x98]
push eax
call fcn.00543180
mov dword [esp + 0x9c], eax
pop ecx
pop ebx
mov edx, dword [esp + 0x88]
push edx
push eax
call fcn.00542f00
mov ebx, eax
pop eax
mov eax, dword [esp + 0x8c]
push eax
call fcn.00542bb0
mov dword [esp + 0x90], ebx
add esp, 0x10
mov eax, esi
mov esi, dword [esp + 0x1c]
sub eax, esi
cmp eax, 0
jle 0x54042b
push ebx
push ebx
push eax
mov ecx, dword [esp + 0x8c]
push ecx
call fcn.00542e00
mov dword [esp + 0x90], eax
add esp, 0x10
mov ebx, dword [esp + 0x24]
test ebx, ebx
jne 0x540452
test edi, edi
jle 0x53fda6
push eax
push eax
push edi
mov eax, dword [esp + 0x90]
push eax
call fcn.00542e00
mov dword [esp + 0x94], eax
add esp, 0x10
test ebp, ebp
jle 0x53fdc4
push eax
push eax
push ebp
mov eax, dword [esp + 0x98]
push eax
call fcn.00542e00
mov dword [esp + 0x9c], eax
add esp, 0x10
push eax
push eax
mov ebp, dword [esp + 0x8c]
push ebp
mov edi, dword [esp + 0x8c]
push edi
call fcn.00542c90
add esp, 0x10
mov ebp, eax
cmp dword [eax + 0x10], 1
jle 0x540475
mov esi, dword [ebp + 0xc]
mov dword [ebp + 0xc], 0
push ebx
push ebx
mov ecx, dword [esp + 0x94]
push ecx
push ebp
call fcn.00542a00
add esp, 0x10
mov edx, dword [esp + 0x58]
test edx, edx
je 0x53fe17
test eax, eax
jle 0x540218
cmp eax, 0
jl 0x540bc4
je 0x540b22
lea ebx, [esp + 0xc0]
mov dword [esp + 0x94], ebx
push eax
push eax
mov eax, dword [esp + 0x94]
push eax
push ebp
call fcn.005435d0
fld st(0)
fstp qword [esp + 0xd0]
fld dword [0x5b311c]
add esp, 0x10
fucomp st(1)
fnstsw ax
test ah, 1
jne 0x540634
fstp st(0)
test esi, esi
jne 0x540765
mov dword [esp + 0x3c], 0
mov eax, dword [esp + 0x30]
test eax, eax
je 0x540485
cmp dword [esp + 0x28], 1
jg 0x540485
mov ebx, dword [esp + 0xcc]
mov ecx, dword [esp + 0x34]
mov dword [ebx + 0x10], 0
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xdc], 0x50
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x53ff0a
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0xd8]
sub ebx, eax
mov dword [esp + 0x30], 0
cmp ebx, 0
je 0x53ff0a
jle 0x540d02
push eax
push eax
push ebx
mov eax, dword [esp + 0xd8]
push eax
call fcn.00542e00
mov dword [esp + 0xdc], eax
add esp, 0x10
mov esi, dword [esp + 0xd4]
mov dword [esp + 0x30], 0
sub esi, ebx
mov dword [esp + 0xd4], esi
mov eax, dword [esp + 0xd4]
mov edx, dword [esp + 0x10c]
sub esp, 0xc
mov dword [edx], eax
mov ebx, dword [esp + 0x8c]
push ebx
call fcn.00542bb0
pop ecx
mov edx, dword [esp + 0x90]
push edx
call fcn.00542bb0
pop eax
mov eax, dword [esp + 0x98]
push eax
call fcn.00542bb0
pop eax
mov eax, dword [esp + 0x94]
push eax
call fcn.00542bb0
mov dword [esp], ebp
call fcn.00542bb0
add esp, 0x10
mov ecx, dword [esp + 0x108]
mov eax, dword [ecx + 8]
cmp eax, dword [esp + 0xd4]
jge 0x53ffaa
mov eax, dword [esp + 0xcc]
mov dword [eax + 0x10], 0
mov dword [esp + 0xdc], 0xa3
call sub.msvcrt.dll__errno
mov dword [eax], 0x22
mov ebx, dword [esp + 0x108]
mov edx, dword [esp + 0x10c]
mov eax, dword [ebx + 8]
inc eax
mov dword [edx], eax
mov eax, dword [esp + 0x30]
test eax, eax
je 0x53f4b9
mov ebx, dword [esp + 0xcc]
mov eax, dword [esp + 0x64]
test eax, eax
jne 0x540130
mov ebp, dword [ebx + 0x10]
test ebp, ebp
setg al
and eax, 0xff
lea edx, [eax + eax]
mov eax, dword [esp + 0xdc]
and eax, 0xfffffff8
or edx, eax
mov dword [esp + 0xdc], edx
test dl, 0x30
je 0x53f4c0
or edx, 0x40
mov dword [esp + 0xdc], edx
jmp 0x53f4c0
mov dword [esp + 0x50], 0
cmp al, 0x30
jne 0x540034
mov eax, dword [esp + 0x50]
inc eax
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xd0]
lea edx, [eax + 1]
mov dword [esp + 0xd0], edx
mov al, byte [eax + 1]
movsx ebx, al
cmp al, 0x30
je 0x540010
lea eax, [ebx - 0x31]
cmp eax, 8
ja 0x540147
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0xd0]
sub ebx, 0x30
mov dword [esp + 0x68], ecx
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], 1
mov dword [esp + 0x14], ebx
jmp 0x53fb2e
xor eax, eax
mov dword [esp + 0xd0], edi
jmp 0x53f607
mov ecx, eax
xor ebx, ebx
sar ecx, 4
cmp ecx, 0xf
jle 0x5400d3
fld qword [0x5b31e0]
mov eax, dword [esp + 0xbc]
sub ecx, 0x10
mov edx, eax
and eax, 0x800fffff
or eax, 0x3ff00000
and edx, 0x7ff00000
shr edx, 0x14
mov dword [esp + 0xbc], eax
fld qword [esp + 0xb8]
fmul st(1)
lea ebx, [ebx + edx - 0x3ff]
cmp ecx, 0xf
fstp qword [esp + 0xb8]
jg 0x54008f
fstp st(0)
mov edx, dword [esp + 0xbc]
mov eax, edx
and edx, 0x800fffff
and eax, 0x7ff00000
or edx, 0x3ff00000
shr eax, 0x14
mov dword [esp + 0xbc], edx
test ecx, ecx
lea ebx, [ebx + eax - 0x3ff]
jle 0x53f6f9
xor eax, eax
jmp 0x54010b
inc eax
test cl, 1
je 0x540125
fld qword [esp + 0xb8]
fmul qword [eax*8 + 0x5b31c0]
fstp qword [esp + 0xb8]
sar ecx, 1
test ecx, ecx
jg 0x54010a
jmp 0x53f6f9
mov dword [ebx + 0x10], 0
mov dword [esp + 0xdc], 0x50
jmp 0x53f4c0
mov dword [esp + 0x48], 0
mov dword [esp + 0x2c], 1
mov dword [esp + 0x4c], 0
jmp 0x53f5f3
je 0x53f7eb
lea eax, [ebx + edx]
mov dword [esp + 0xd8], eax
test eax, eax
jle 0x540cae
neg ebx
push eax
push eax
push ebx
mov eax, dword [esp + 0xd8]
push eax
call fcn.00544180
add esp, 0x10
jmp 0x53f7eb
sub esp, 0xc
lea eax, [esp + 0xe8]
push eax
mov edx, dword [esp + 0x68]
push edx
push 1
mov eax, dword [esp + 0xd4]
push eax
mov eax, dword [esp + 0xd4]
push eax
jmp 0x53f9db
sub esp, 0xc
mov eax, dword [esp + 0x6c]
push eax
lea eax, [esp + 0xdc]
push eax
mov eax, dword [esp + 0x120]
push eax
mov eax, dword [esp + 0x120]
push eax
lea eax, [esp + 0xec]
push eax
call fcn.00543720
mov dword [esp + 0xfc], eax
add esp, 0x20
cmp eax, 6
jne 0x53f4b9
mov ebx, dword [esp + 0xcc]
mov dword [esp + 0xd0], edi
mov dword [esp + 0x60], 0
jmp 0x53f4c0
mov eax, dword [esp + 0x58]
mov dword [esp + 0xdc], 1
and eax, 1
xor eax, esi
mov dword [esp + 0x3c], eax
je 0x540b0b
test esi, esi
je 0x54051b
lea ecx, [esp + 0xc0]
mov dword [esp + 0xdc], 0x21
mov dword [esp + 0x94], ecx
mov dword [esp + 0x18], 0
mov dword [esp + 0x40], 0x20
fld1
mov ebx, dword [esp + 0x94]
fst qword [ebx]
mov dword [esp + 0x78], 0
fstp qword [esp + 0x70]
mov eax, dword [esp + 0xd4]
mov edi, dword [esp + 0xd8]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x5402a5
cmp dword [esp + 0x44], edi
jg 0x5406f0
lea eax, [esp + 0xe0]
push eax
lea eax, [esp + 0xe8]
push eax
mov ecx, dword [esp + 0x9c]
mov esi, dword [ecx + 4]
push esi
mov ebx, dword [ecx]
push ebx
call fcn.005433c0
mov esi, eax
mov eax, dword [esp + 0xf4]
add esp, 0x10
cmp eax, 0
jl 0x540827
jne 0x540508
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0xcc]
test eax, eax
je 0x5403d7
push ecx
push ecx
push esi
push ebx
call fcn.00542c90
mov dword [esp + 0xdc], eax
add esp, 0x10
mov ecx, eax
mov eax, dword [ebx + 0x10]
mov edx, dword [esp + 0x30]
test edx, edx
jne 0x540345
dec eax
cmp eax, dword [ecx + 0x10]
jl 0x54083a
mov eax, dword [esp + 0x34]
cmp dword [esp + 0x5c], eax
jne 0x5404a8
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x30], 1
dec eax
mov dword [esp + 0xd8], eax
sub esp, 0xc
push esi
call fcn.00542bb0
mov dword [esp], ebx
call fcn.00542bb0
add esp, 0x10
mov esi, dword [esp + 0x3c]
test esi, esi
jne 0x53feb0
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0xd4]
mov ebx, dword [esp + 0xd8]
lea edx, [edi + ecx]
add eax, ebx
cmp edx, eax
je 0x5405d0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x1c], 0
test eax, eax
je 0x5404e4
sub esp, 0xc
mov esi, dword [esp + 0x8c]
push esi
call fcn.00542bb0
pop ebx
mov ecx, dword [esp + 0x90]
push ecx
call fcn.00542bb0
pop edx
mov eax, dword [esp + 0x98]
push eax
call fcn.00542bb0
mov dword [esp], ebp
call fcn.00542bb0
add esp, 0x10
jmp 0x53fbf0
push eax
push eax
push esi
push ebx
call fcn.00544000
mov dword [esp + 0xdc], eax
mov ecx, eax
mov eax, dword [eax + 0x10]
add esp, 0x10
dec eax
cmp eax, dword [ebx + 0x10]
jl 0x5406d3
mov eax, dword [esp + 0x30]
test eax, eax
je 0x540730
mov eax, dword [esp + 0xd8]
inc eax
mov dword [esp + 0xd8], eax
cmp dword [esp + 0x44], eax
jne 0x540345
mov dword [esp + 0x30], 0
jmp 0x540345
je 0x53fd7c
neg eax
push edx
push edx
push eax
mov esi, dword [esp + 0x8c]
push esi
call fcn.00544180
add esp, 0x10
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x53fd88
push ecx
push ecx
mov edx, dword [esp + 0x2c]
push edx
mov eax, dword [esp + 0x90]
push eax
call fcn.00543180
mov dword [esp + 0x94], eax
add esp, 0x10
jmp 0x53fd88
mov esi, dword [eax + 0x14]
test esi, esi
jne 0x53fdea
jmp 0x53feb0
lea edx, [esp + 0xc0]
mov dword [esp + 0x18], 1
mov dword [esp + 0x94], edx
mov dword [esp + 0x40], 0x10
jmp 0x540267
push edi
push edi
push 1
push ecx
call fcn.00542e00
mov edx, dword [esp + 0xe4]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x6c]
dec edx
dec eax
mov dword [esp + 0xe4], edx
mov dword [esp + 0x6c], eax
mov dword [esp], esi
call fcn.00542bb0
mov dword [esp], ebx
call fcn.00542bb0
add esp, 0x10
sub esp, 0xc
mov edi, dword [esp + 0xd8]
push edi
call fcn.00544250
mov dword [esp + 0x40], 0
mov dword [esp + 0x2c], eax
add esp, 0x10
jmp 0x54039b
push edx
push edx
push eax
push esi
call fcn.00542e00
add esp, 0x10
mov esi, eax
jmp 0x5402e3
mov ebx, dword [esp + 0x34]
mov dword [esp + 0xdc], 0x11
cmp dword [esp + 0x5c], ebx
je 0x53fe75
cmp dword [esp + 0x44], 0x1f
jle 0x540c70
mov ebx, dword [esp + 0xcc]
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x53fe75
mov edx, dword [esp + 0x44]
xor esi, esi
jmp 0x54056c
mov eax, dword [ebx + esi*4 + 0x14]
test eax, eax
jne 0x53fe75
sub edx, 0x20
inc esi
cmp edx, 0x1f
jg 0x540560
cmp edx, 1
jle 0x540599
mov ebx, dword [esp + 0xcc]
mov eax, dword [ebx + esi*4 + 0x14]
bsf ecx, eax
shr eax, cl
mov dword [ebx + esi*4 + 0x14], eax
lea eax, [edx - 1]
cmp ecx, eax
jl 0x53fe75
mov eax, dword [esp + 0x5c]
dec eax
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0xd8], eax
push edi
push edi
push eax
mov esi, dword [esp + 0xd8]
push esi
call fcn.0053ef70
mov dword [esp + 0xdc], eax
add esp, 0x10
jmp 0x53feb0
mov ecx, dword [esp + 0x78]
test ecx, ecx
je 0x540387
mov ebx, dword [esp + 0x94]
fld qword [0x5b3130]
fmul qword [ebx]
fld qword [esp + 0x70]
fsub dword [0x5b3124]
fst qword [ebx]
fld st(1)
fchs
fucomp st(1)
fnstsw ax
test ah, 0x45
jne 0x5406a8
fstp st(0)
fld qword [esp + 0x70]
fucompp
fnstsw ax
test ah, 0x45
jne 0x540387
mov edx, dword [esp + 0xdc]
mov eax, dword [esp + 0x40]
or edx, eax
mov dword [esp + 0xdc], edx
jmp 0x53feb0
fmul dword [0x5b3124]
cmp esi, 1
sbb eax, eax
and eax, 1
cmp esi, 1
sbb edx, edx
mov dword [esp + 0x18], eax
fst qword [esp + 0x70]
and edx, 0x10
fst qword [esp + 0xc0]
add edx, 0x10
fld qword [0x5b3128]
fucompp
fnstsw ax
mov dword [esp + 0x40], edx
test ah, 0x45
je 0x540782
mov dword [esp + 0x3c], 0
mov dword [esp + 0x78], 0
jmp 0x54027e
sub edi, ebx
jmp 0x53fcbd
mov edx, dword [esp + 0xc]
xor edi, edi
mov ecx, edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], 0
jmp 0x53fcb3
fucomp st(1)
fnstsw ax
test ah, 0x45
jne 0x540820
fsubr dword [0x5b3120]
fld qword [esp + 0x70]
fxch st(1)
fucompp
fnstsw ax
test ah, 0x45
jne 0x540387
jmp 0x54061b
bsr edx, dword [ecx + eax*4 + 0x14]
bsr eax, dword [ebx + eax*4 + 0x14]
xor edx, 0x1f
xor eax, 0x1f
cmp edx, eax
jge 0x540345
jmp 0x5403f9
mov ebx, dword [esp + 0x44]
push eax
sub ebx, edi
push eax
push ebx
mov eax, dword [esp + 0xd8]
push eax
call fcn.00542e00
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0xe4]
mov edx, dword [esp + 0x54]
sub eax, ebx
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], edx
add esp, 0x10
jmp 0x5402a5
push eax
push eax
push 1
push ecx
call fcn.00544180
mov eax, dword [esp + 0xe4]
inc eax
mov dword [esp + 0x88], 0
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0x6c]
inc eax
mov dword [esp + 0x6c], eax
add esp, 0x10
jmp 0x540345
mov dword [esp + 0x18], 0
mov dword [esp + 0x40], 0x20
mov dword [esp + 0x3c], 0
jmp 0x540267
fnstcw word [esp + 0xa6]
mov ax, word [esp + 0xa6]
mov ah, 0xc
fld qword [esp + 0x70]
mov word [esp + 0xa4], ax
fldcw word [esp + 0xa4]
fist dword [esp + 0x78]
fldcw word [esp + 0xa6]
cmp dword [esp + 0x58], 1
fild dword [esp + 0x78]
fsub st(1), st(0)
fxch st(1)
fstp qword [esp + 0x70]
je 0x5408e1
cmp dword [esp + 0x58], 2
je 0x5408bd
mov edi, dword [esp + 0x58]
test edi, edi
jne 0x54080c
fld dword [0x5b3124]
fld qword [esp + 0x70]
fucompp
fnstsw ax
test ah, 5
jne 0x54080c
fstp st(0)
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x40]
inc ecx
mov eax, 0x30
mov dword [esp + 0x78], ecx
sub eax, edx
mov dword [esp + 0x40], eax
fild dword [esp + 0x78]
fstp qword [esp + 0xc0]
mov dword [esp + 0x3c], 0
jmp 0x54027e
fstp st(0)
jmp 0x540387
neg eax
push ecx
push ecx
push eax
push esi
call fcn.00544180
add esp, 0x10
jmp 0x5402e3
bsr edx, dword [ecx + eax*4 + 0x14]
bsr eax, dword [ebx + eax*4 + 0x14]
xor edx, 0x1f
xor eax, 0x1f
cmp edx, eax
jle 0x540345
jmp 0x540320
mov ebx, dword [esp + 0x60]
inc ebx
mov dword [esp + 0x58], ebx
jmp 0x53f658
mov ecx, dword [esp + 0x60]
sub eax, ecx
mov dword [esp + 0x58], eax
jmp 0x53f658
mov edx, dword [esp + 0x50]
mov ebx, dword [esp + 0x48]
lea eax, [edx + ebx - 1]
lea edx, [eax + 1]
cmp eax, 8
mov dword [esp + 0x48], edx
jg 0x540c7b
mov ebx, dword [esp + 0x7c]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x50], 0
lea eax, [ebx + ebx*4]
lea eax, [edx + eax*2]
mov dword [esp + 0x7c], eax
lea eax, [ecx + 1]
mov dword [esp + 0xd0], eax
movsx ebx, byte [ecx + 1]
jmp 0x53fb06
mov ebx, dword [esp + 0x18]
test ebx, ebx
jne 0x54080c
fldz
fld qword [esp + 0x70]
fucompp
fnstsw ax
test ah, 0x45
je 0x5407ee
jmp 0x54080c
mov esi, dword [esp + 0x18]
test esi, esi
je 0x54080c
jmp 0x5408c9
mov dword [esp + 0x5c], esi
jmp 0x53fba6
je 0x53f6f7
neg eax
mov edx, eax
and edx, 0xf
je 0x54091c
fld qword [esp + 0xb8]
fdiv qword [edx*8 + 0x5b3240]
fstp qword [esp + 0xb8]
and eax, 0xfffffff0
je 0x53f6f7
mov ecx, eax
xor ebx, ebx
sar ecx, 4
cmp ecx, 0xf
jle 0x54097b
fld qword [0x5b3220]
mov eax, dword [esp + 0xbc]
sub ecx, 0x10
mov edx, eax
and eax, 0x800fffff
or eax, 0x3ff00000
and edx, 0x7ff00000
shr edx, 0x14
mov dword [esp + 0xbc], eax
fld qword [esp + 0xb8]
fmul st(1)
lea ebx, [ebx + edx - 0x3ff]
cmp ecx, 0xf
fstp qword [esp + 0xb8]
jg 0x540937
fstp st(0)
mov edx, dword [esp + 0xbc]
mov eax, edx
and edx, 0x800fffff
and eax, 0x7ff00000
or edx, 0x3ff00000
shr eax, 0x14
mov dword [esp + 0xbc], edx
test ecx, ecx
lea ebx, [ebx + eax - 0x3ff]
jle 0x53f6f9
xor eax, eax
jmp 0x5409b3
inc eax
test cl, 1
je 0x5409cd
fld qword [esp + 0xb8]
fmul qword [eax*8 + 0x5b3200]
fstp qword [esp + 0xb8]
sar ecx, 1
test ecx, ecx
jg 0x5409b2
jmp 0x53f6f9
mov eax, dword [esp + 0x48]
mov edx, 0xf
sub edx, eax
lea eax, [edx + 0x16]
cmp dword [esp + 0x9c], eax
jg 0x53f6ba
fld qword [esp + 0xb8]
fmul qword [edx*8 + 0x5b3240]
mov eax, dword [esp + 0x9c]
sub eax, edx
fmul qword [eax*8 + 0x5b3240]
fst qword [esp + 0xb8]
sub esp, 0xc
lea eax, [esp + 0xe8]
push eax
mov eax, dword [esp + 0x68]
push eax
push 0
sub esp, 8
fstp qword [esp]
jmp 0x53f9db
cmp ebx, 0x69
je 0x53f871
cmp ebx, 0x6e
jne 0x53f92c
push ebp
push ebp
push 0x5b2fe9
lea ebx, [esp + 0xdc]
push ebx
call fcn.005434c0
add esp, 0x10
test eax, eax
je 0x53f92c
mov ecx, dword [esp + 0x108]
mov dword [esp + 0xdc], 4
mov edx, dword [esp + 0x10c]
mov dword [esp + 0x30], 0
mov eax, dword [ecx + 8]
inc eax
mov dword [edx], eax
mov eax, dword [esp + 0xd0]
cmp byte [eax], 0x28
jne 0x53ff96
push edi
mov esi, dword [esp + 0x114]
push esi
push ecx
push ebx
call fcn.00543e10
mov dword [esp + 0x40], 0
mov dword [esp + 0xec], eax
add esp, 0x10
jmp 0x53ff96
cmp dword [esp + 0x9c], 0xffffffea
jl 0x53f6ba
mov eax, dword [esp + 0x9c]
shl eax, 3
neg eax
fld qword [esp + 0xb8]
fdiv qword [eax + 0x5b3240]
jmp 0x540a11
mov eax, dword [esp + 0xb4]
mov edx, 0x15
or eax, 0x100000
bsf eax, eax
sub edx, eax
jmp 0x53f9a1
cmp esi, 1
sbb eax, eax
and eax, 0x10
add eax, 0x11
mov dword [esp + 0xdc], eax
jmp 0x53feb0
test esi, esi
je 0x540cda
mov eax, dword [esp + 0x30]
test eax, eax
je 0x540b70
mov ecx, dword [esp + 0xd8]
mov ebx, dword [esp + 0xcc]
mov eax, ecx
sar eax, 5
lea edx, [ebx + 0x14]
lea eax, [ebx + eax*4 + 0x14]
cmp edx, eax
jae 0x540d2e
lea edx, [ebx + 0x18]
cmp dword [ebx + 0x14], 0xffffffff
je 0x540b63
jmp 0x540b70
add edx, 4
cmp edx, eax
jae 0x540d2e
cmp dword [edx], 0xffffffff
je 0x540b60
mov dword [esp + 0xdc], 0x11
mov ecx, dword [esp + 0x44]
cmp dword [esp + 0x28], ecx
jl 0x540cf1
mov ebx, dword [esp + 0xcc]
test byte [ebx + 0x14], 1
je 0x53feb0
test esi, esi
jne 0x540db9
cmp dword [esp + 0x28], 1
je 0x53fe93
push ebx
call fcn.0053ef30
mov dword [esp + 0xe0], 0x11
pop eax
jmp 0x53feb0
test esi, esi
jne 0x540c9e
mov dword [esp + 0xdc], 0x21
cmp dword [esp + 0x28], 1
jg 0x53feb0
mov ebx, dword [esp + 0x30]
test ebx, ebx
jne 0x53ff0a
mov edx, dword [esp + 0x34]
cmp dword [esp + 0x5c], edx
je 0x53feb8
push ecx
push ecx
push 1
push ebp
call fcn.00542e00
mov ebp, eax
pop eax
pop edx
mov eax, dword [esp + 0x94]
push eax
push ebp
call fcn.00542a00
add esp, 0x10
test eax, eax
jle 0x53feb8
mov dword [esp + 0xdc], 0x11
mov eax, dword [esp + 0x34]
cmp dword [esp + 0x5c], eax
jne 0x540d7f
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xdc], 0x21
cmp dword [eax + 0x10], 1
jne 0x53feb0
cmp dword [eax + 0x14], 1
jne 0x53feb0
mov dword [esp + 0x64], 1
jmp 0x53feb0
mov edx, dword [esp + 0x44]
xor esi, esi
jmp 0x540575
mov dword [esp + 0x50], 0
cmp dword [esp + 0x48], 0x10
jg 0x5408aa
lea eax, [ebp + ebp*4]
mov ebx, dword [esp + 0x14]
lea ebp, [ebx + eax*2]
jmp 0x5408aa
mov dword [esp + 0xdc], 0x11
jmp 0x53feb0
inc eax
jl 0x53f80d
mov eax, dword [esp + 0xcc]
mov dword [esp + 0xd8], 1
mov dword [eax + 0x14], 1
mov dword [eax + 0x10], 1
jmp 0x53f7eb
cmp dword [esp + 0x28], 1
je 0x540d1e
mov dword [esp + 0xdc], 0x21
jmp 0x540b7b
mov eax, dword [esp + 0x30]
test eax, eax
je 0x53feb8
jmp 0x540b89
push eax
push eax
mov eax, ebx
neg eax
push eax
mov edi, dword [esp + 0xd8]
push edi
call fcn.00544180
add esp, 0x10
jmp 0x53fef2
mov dword [esp + 0xdc], 1
jmp 0x540c2e
and ecx, 0x1f
je 0x540d43
or eax, 0xffffffff
mov edi, dword [edx]
shl eax, cl
or eax, edi
inc eax
jne 0x540b70
mov dword [ebx + 0x10], 1
mov dword [ebx + 0x14], 1
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x34]
mov dword [esp + 0xd8], 1
mov dword [esp + 0xdc], 0x21
lea eax, [ecx + ebx - 1]
mov dword [esp + 0xd4], eax
jmp 0x53feb8
mov edx, dword [esp + 0x44]
mov ebx, dword [esp + 0xd4]
sub ebx, edx
mov dword [esp + 0xd8], edx
mov dword [esp + 0xd4], ebx
push ecx
push ecx
push edx
mov eax, dword [esp + 0xd8]
push eax
call fcn.0053ef70
mov dword [esp + 0xdc], eax
add esp, 0x10
jmp 0x53feb0
sub esp, 0xc
push ebx
call fcn.0053efe0
mov ebx, dword [esp + 0xe8]
mov dword [esp + 0xdc], eax
mov edx, ebx
add esp, 0x10
and edx, 0x1f
mov ecx, eax
je 0x540de5
mov eax, 0x20
sub eax, edx
mov edx, eax
mov eax, dword [ecx + 0x10]
dec eax
sar eax, 5
bsr eax, dword [ecx + eax*4 + 0x14]
xor eax, 0x1f
cmp edx, eax
je 0x540e02
lea eax, [ebx + 1]
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], 0x21
jmp 0x53feb0