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

Disassembly:
push esi
push edi
push ebx
push ebp
sub esp, 0x100
mov eax, dword [esp + 0x114]
mov edx, dword [esp + 0x118]
mov ecx, dword [esp + 0x120]
mov dword [esp + 0xe4], eax
mov dword [esp + 0xf8], edx
mov eax, dword [esp + 0x124]
mov edx, dword [esp + 0x128]
mov ebx, dword [esp + 0x11c]
test ebx, 0x8010000
mov dword [esp + 0xac], ecx
mov ecx, 0
mov dword [esp + 0x94], eax
mov dword [esp + 0xa8], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x84], ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x90], ecx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], ecx
je 0x47693e
test ebx, 0x10000
je 0x476931
lea eax, [esp + 0x133]
and eax, 0xfffffffc
movsx edx, byte [eax]
mov dword [esp + 0x98], edx
jmp 0x476949
mov dword [esp + 0x98], 0x2c
jmp 0x476949
mov dword [esp + 0x98], 0x2e
cmp dword [esp + 0xf8], 0
jle 0x477e84
mov edx, ebx
mov eax, ebx
and edx, 0x80
and eax, 0x80000000
mov ebp, edx
shl edx, 0x18
and edx, eax
shl ebp, 4
shr edx, 0x13
or ebp, edx
mov dword [esp + 0x9c], eax
test bl, 0x20
je 0x477e78
mov edx, dword [esp + 0xf8]
mov esi, dword [esp + 0xe4]
movsx ecx, byte [esi]
add ecx, 0xfffffff7
cmp ecx, 0x20
jae 0x4769c2
mov eax, 1
shl eax, cl
test eax, 0x80001f
je 0x4769c2
inc esi
dec edx
jne 0x476993
mov dword [esp + 0xe4], esi
mov dword [esp + 0xf8], edx
mov edx, esi
jmp 0x4769f7
mov dword [esp + 0xe4], esi
mov dword [esp + 0xf8], edx
mov edx, esi
mov eax, edx
movsx eax, byte [eax]
cmp eax, 0x2d
jne 0x4769e1
or ebp, 8
jmp 0x4769e6
cmp eax, 0x2b
jne 0x4769f7
dec dword [esp + 0xf8]
or ebp, 2
inc dword [esp + 0xe4]
xor esi, esi
fldz
mov dword [esp + 0xfc], esi
mov dword [esp + 0xf0], esi
mov dword [esp + 0xf4], esi
mov dword [esp + 0xe8], esi
mov dword [esp + 0xec], esi
cmp dword [esp + 0xf8], 0
je 0x476ed9
mov ecx, ebx
mov edi, ebx
and ecx, 0x10
and edi, 0x100
mov dword [esp + 0xc0], ecx
mov ecx, ebx
and ecx, 0x1000
mov dword [esp + 0xdc], ecx
mov ecx, ebx
and ecx, 2
mov dword [esp + 0xa4], ecx
mov ecx, ebx
and ecx, 0x40000000
mov dword [esp + 0xb0], ecx
mov ecx, ebx
and ecx, 8
mov dword [esp + 0xbc], ecx
mov ecx, ebx
and ecx, 4
mov dword [esp + 0xc4], ecx
mov ecx, ebx
and ecx, 0x40
mov dword [esp + 0xb4], ecx
mov ecx, ebx
and ecx, 1
mov dword [esp + 0xb8], ecx
mov ecx, ebx
mov dword [esp + 0xe0], edi
and ecx, 0x800
mov dword [esp + 0xd4], 9
mov dword [esp + 0xd0], 2
mov dword [esp + 0xcc], 1
mov dword [esp + 0xc8], 0
mov dword [esp + 0xd8], ecx
mov dword [esp + 0xa0], ebx
mov edi, dword [esp + 0xfc]
mov ecx, dword [esp + 0xe4]
movsx ebx, byte [ecx]
lea ecx, [ebx - 9]
cmp ecx, 0x6f
ja case.0x476b00.10
jmp dword [ecx*4 + 0x4f00e0]
cmp dword [esp + 0xc0], 0
jne 0x476eb7
jmp case.0x476b00.10
cmp dword [esp + 0xe0], 0
je case.0x476b00.10
test ebp, 0x200
jne case.0x476b00.10
test esi, esi
jne case.0x476b00.10
cmp dword [esp + 0xc8], 1
jne case.0x476b00.10
xor ebp, 4
mov dword [esp + 0xd4], 8
or ebp, 0x200
mov dword [esp + 0xd0], 1
mov dword [esp + 0xcc], 3
jmp 0x476eb7
mov ecx, ebp
and ecx, 0x200
or ecx, dword [esp + 0xdc]
jne case.0x476b00.10
jmp 0x477a78
test ebp, 0x200
je case.0x476b00.10
jmp 0x477a78
test ebp, 0x800
je case.0x476b00.10
mov ecx, ebp
mov eax, dword [esp + 0xc8]
and ecx, 0x201
or eax, esi
or eax, ecx
jne case.0x476b00.10
mov eax, dword [esp + 0xe4]
mov ecx, 0x4efa44
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xf8]
test eax, eax
mov dword [esp + 8], eax
jle 0x476c3f
mov dword [esp + 0xfc], edi
mov dword [esp + 0x10], esi
mov dword [esp], ebx
mov esi, dword [esp + 0xf8]
mov edi, dword [esp + 0xe4]
movsx ebx, byte [ecx]
test ebx, ebx
je 0x476c23
movsx eax, byte [edi]
or ebx, 0x20
or eax, 0x20
inc ecx
cmp eax, ebx
jne 0x477cd5
dec esi
inc edi
test esi, esi
jg 0x476c04
mov dword [esp + 0xf8], esi
mov dword [esp + 0xe4], edi
mov ebx, dword [esp]
mov edi, dword [esp + 0xfc]
mov esi, dword [esp + 0x10]
cmp byte [ecx], 0
je 0x477b94
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xe4], ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0xf8], ecx
jmp case.0x476b00.10
test ebp, 0x800
je case.0x476b00.10
mov ecx, ebp
mov eax, dword [esp + 0xc8]
and ecx, 0x201
or eax, esi
or eax, ecx
jne case.0x476b00.10
mov eax, dword [esp + 0xe4]
mov ecx, str.Infinity
cmp dword [esp + 0xf8], 0
jle 0x476d81
mov dword [esp + 0xfc], edi
mov dword [esp + 0x10], esi
mov dword [esp], ebx
mov dword [esp + 4], eax
mov esi, dword [esp + 0xf8]
mov edi, dword [esp + 0xe4]
movsx ebx, byte [ecx]
test ebx, ebx
je 0x477d1b
movsx eax, byte [edi]
or ebx, 0x20
or eax, 0x20
cmp eax, ebx
jne 0x477cf6
dec esi
inc ecx
inc edi
test esi, esi
jg 0x476cc2
mov dword [esp + 0xf8], esi
mov dword [esp + 0xe4], edi
mov ebx, dword [esp]
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xfc]
mov esi, dword [esp + 0x10]
cmp byte [ecx], 0
jne 0x476d81
fstp st(0)
mov edx, dword [esp + 0xe4]
test ebp, 8
je 0x476d23
fld dword [0x4f0ffc]
jmp 0x476d29
fld dword [0x4f0ff8]
and ebp, 0xfffffff7
mov ecx, ebp
or ecx, 0xc000000
cmp dword [esp + 0xb0], 0
je 0x476d40
mov ebp, ecx
cmp dword [esp + 0xa4], 0
je case.0x476b00.10
cmp dword [esp + 0xf8], 0
je case.0x476b00.10
mov ecx, dword [esp + 0xf8]
mov eax, edx
cmp byte [eax], 0x20
jne 0x476d6e
inc eax
dec ecx
jne 0x476d65
mov dword [esp + 0xf8], ecx
mov dword [esp + 0xe4], eax
jmp case.0x476b00.10
cmp byte [ecx - 1], 0x66
je 0x476d0a
mov dword [esp + 0xe4], eax
neg eax
add ecx, eax
mov dword [esp + 0xf8], ecx
jmp case.0x476b00.10
test ebp, 0x200
jne 0x476dd2
jmp 0x477a78
test ebp, 0x200
jne 0x476dd2
cmp dword [esp + 0xdc], 0
jne case.0x476b00.10
jmp 0x477a78
test ebp, 0x200
je case.0x476b00.10
or ebx, 0x20
add ebx, 0xffffffa9
jmp 0x476ddd
add ebx, 0xffffffd0
or ebp, 4
inc esi
mov ecx, ebp
and ecx, 0x201
cmp ecx, 0x200
mov ecx, 0
sete cl
neg ecx
lea edi, [edi + ecx + 1]
mov ecx, dword [esp + 0xf4]
cmp ecx, dword [esp + 0xd4]
je 0x477d3e
mov ecx, dword [esp + 0xcc]
mov eax, dword [esp + 0xf0]
shl eax, cl
mov ecx, dword [esp + 0xf0]
inc dword [esp + 0xf4]
lea ecx, [eax + ecx*8]
add ecx, ebx
mov dword [esp + 0xf0], ecx
jmp 0x476eb7
test esi, esi
jne case.0x476b00.49
mov ecx, ebp
or ebp, 4
and ecx, 1
add edi, ecx
xor ecx, 1
add dword [esp + 0xc8], ecx
jmp 0x476eb7
cmp dword [esp + 0xbc], 0
jne 0x476eb7
jmp case.0x476b00.10
cmp dword [esp + 0xc4], 0
jne 0x476eb7
jmp case.0x476b00.10
cmp dword [esp + 0xd8], 0
jne case.0x476b00.10
jmp 0x477d84
cmp dword [esp + 0xa4], 0
jne 0x476eb7
jmp 0x477da5
cmp ebx, dword [esp + 0x98]
jne 0x477dbd
test ebp, 1
jne 0x477dbd
or ebp, 1
xor edi, edi
jmp 0x476eb7
cmp dword [esp + 0xb8], 0
je case.0x476b00.10
inc dword [esp + 0xe4]
dec dword [esp + 0xf8]
jne 0x476aea
mov dword [esp + 0xfc], edi
mov ebx, dword [esp + 0xa0]
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xb0], ecx
mov dword [esp + 8], edi
mov dword [esp + 4], ecx
test ebp, 4
mov ecx, dword [esp + 0xb0]
jne 0x476f00
mov ecx, edx
test ebp, 0x40
je 0x476f0f
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0xb0], ecx
test ebx, 0x8000
je 0x476f55
cmp dword [esp + 0x9c], 0
je 0x476f40
cmp dword [esp + 0xf8], 0
je 0x476f55
mov edx, dword [esp + 0xe4]
cmp byte [edx], 0
jne 0x476f4a
jmp 0x476f55
cmp dword [esp + 0xf8], 0
je 0x476f55
or ebp, 0x3000000
jmp 0x477a29
test esi, esi
jne 0x476f94
mov eax, ebp
and eax, 0xc
cmp eax, 0xc
jne 0x476f73
fchs
fstp dword [esp + 0x94]
fld dword [esp + 0x94]
mov eax, ebx
mov edx, ebp
and eax, 0x28000
or edx, 0x3000000
cmp eax, 0x28000
jne 0x477a29
mov ebp, edx
jmp 0x477a29
fstp st(0)
test ebp, 0x10
je 0x476fd3
cmp dword [esp + 8], 6
ja 0x477952
mov edx, dword [esp + 4]
mov ecx, edx
neg ecx
test ebp, 0x80
mov edi, dword [esp + 0x94]
jne 0x476fc2
mov ecx, edx
test ebx, 0x400
jne 0x476fcf
mov edi, 0
sub ecx, edi
jmp 0x476fdc
mov ecx, dword [esp + 0x94]
neg ecx
mov edx, ebp
and edx, 1
test ebp, 0x200
je 0x477219
mov edi, dword [esp + 0xfc]
neg edi
add edi, esi
lea ecx, [ecx + edi*4]
mov edi, dword [esp + 0xac]
shl edi, 2
neg edi
add edi, ecx
test edx, edx
je 0x47700f
mov edi, ecx
mov ecx, dword [esp + 0xf4]
shl ecx, 2
neg ecx
shl dword [esp + 0xf0], cl
mov dword [esp + 0xac], edi
cmp esi, 8
ja 0x477078
mov dword [esp + 0xc], 0
cmp dword [esp + 0xf0], 0
jle 0x47705d
mov eax, dword [esp + 0xf0]
mov edx, dword [esp + 0xc]
add eax, eax
inc edx
test eax, eax
jg 0x47704b
mov dword [esp + 0xf0], eax
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x58], eax
mov dword [esp + 0xe8], 1
jmp 0x477202
mov eax, dword [esp + 0xe8]
inc eax
mov edx, dword [esp + 0xf0]
test edx, edx
mov dword [esp + 0xe8], eax
mov dword [esp + eax*4 + 0x14], edx
jne 0x4770a5
dec eax
cmp dword [esp + eax*4 + 0x14], 0
je 0x477096
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0x18]
xor edx, edx
mov dword [esp + 0xc], edx
test eax, eax
jle 0x47718a
add eax, eax
inc edx
test eax, eax
jg 0x4770b7
mov dword [esp + 0xc], edx
mov dword [esp + 0x18], eax
cmp dword [esp + 0xc], 0
je 0x47718a
mov dword [esp + 0x58], eax
cmp dword [esp + 0xe8], 1
jbe 0x477202
mov eax, dword [esp + 0xe8]
lea edx, [eax - 1]
mov ecx, edx
shr ecx, 0x1f
lea eax, [ecx + eax - 1]
sar eax, 1
test eax, eax
jbe 0x477dd0
mov esi, dword [esp + 0xc]
xor edi, edi
mov dword [esp], ebp
neg esi
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp + 0xa0], ebx
mov eax, dword [esp + edi*8 + 0x1c]
mov ecx, esi
mov edx, eax
shr edx, cl
mov ebp, dword [esp + 0xc]
mov ecx, ebp
or dword [esp + edi*8 + 0x58], edx
mov edx, dword [esp + edi*8 + 0x20]
mov ebx, edx
shl eax, cl
mov ecx, esi
shr ebx, cl
mov ecx, ebp
shl edx, cl
or eax, ebx
mov dword [esp + edi*8 + 0x5c], eax
mov dword [esp + edi*8 + 0x60], edx
inc edi
cmp edi, dword [esp + 8]
jb 0x47711a
mov ebp, dword [esp]
lea eax, [edi + edi + 1]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xa0]
lea ecx, [eax - 1]
cmp edx, ecx
jbe 0x477202
mov esi, dword [esp + eax*4 + 0x18]
mov edx, esi
mov ecx, dword [esp + 0xc]
neg ecx
shr edx, cl
mov ecx, dword [esp + 0xc]
shl esi, cl
or dword [esp + eax*4 + 0x54], edx
mov dword [esp + eax*4 + 0x58], esi
jmp 0x477202
cmp dword [esp + 0xe8], 0
je 0x477202
cmp dword [esp + 0xe8], 0x18
jle 0x477dda
mov edx, dword [esp + 0xe8]
lea ecx, [esp + 0x14]
lea esi, [esp + 0x54]
sub esi, ecx
lea edi, [edx*4]
xor edx, edx
xor eax, eax
cmp esi, edi
mov dword [esp], edi
setg al
neg esi
cmp esi, edi
setg dl
or eax, edx
je 0x477dda
mov eax, dword [esp + 0xe8]
lea esi, [eax*4]
neg esi
lea ecx, [esp + eax*4 + 0x14]
lea edx, [esp + eax*4 + 0x54]
push dword [esp]
lea edi, [ecx + esi + 4]
push edi
lea edx, [edx + esi + 4]
push edx
call fcn.004cd9d0
add esp, 0xc
mov eax, dword [esp + 0xac]
sub eax, dword [esp + 0xc]
mov dword [esp + 0xac], eax
jmp 0x47753e
test edx, edx
je 0x477226
sub ecx, dword [esp + 0xfc]
jmp 0x47722d
sub ecx, dword [esp + 0xac]
lea edx, [esi + ecx]
cmp edx, 0xffffffd3
jl 0x477952
cmp edx, 0x27
jg 0x477952
lea edx, [esi - 0x1b]
test edx, edx
lea edi, [ecx + esi - 0x1b]
jg 0x47724f
mov edi, ecx
mov dword [esp + 4], edi
cmp esi, 9
ja 0x477284
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x94], eax
fild dword [esp + 0x94]
shr eax, 0x1f
fadd qword [eax*8 + 0x4f00c0]
fstp qword [esp + 8]
fld qword [esp + 8]
jmp 0x477394
fild dword [esp + 0x18]
mov eax, dword [esp + 0x18]
shr eax, 0x1f
cmp dword [esp + 0xe8], 2
fadd qword [eax*8 + 0x4f00c0]
fstp qword [esp + 8]
fld qword [esp + 8]
jb 0x477359
fld qword [0x4f13a0]
mov eax, dword [esp + 0xe8]
lea edx, [eax - 1]
mov dword [esp], edx
shr edx, 0x1f
lea eax, [edx + eax - 1]
sar eax, 1
test eax, eax
jbe 0x477e6e
xor edx, edx
lea esi, [esi]
lea edi, [edi]
jmp 0x4772e4
faddp st(2)
fild dword [esp + edx*8 + 0x1c]
fxch st(1)
fmul st(2), st(0)
fild dword [esp + edx*8 + 0x20]
mov ecx, dword [esp + edx*8 + 0x1c]
shr ecx, 0x1f
mov esi, dword [esp + edx*8 + 0x20]
inc edx
shr esi, 0x1f
cmp edx, eax
fxch st(2)
fadd qword [ecx*8 + 0x4f00c0]
fstp qword [esp + 8]
fld qword [esp + 8]
faddp st(3)
fmul st(2), st(0)
fxch st(1)
fadd qword [esi*8 + 0x4f00c0]
fstp qword [esp + 8]
fld qword [esp + 8]
jb 0x4772e2
faddp st(2)
lea edx, [edx + edx + 1]
lea eax, [edx - 1]
cmp eax, dword [esp]
jae 0x477e97
fmulp st(1)
fild dword [esp + edx*4 + 0x18]
mov eax, dword [esp + edx*4 + 0x18]
shr eax, 0x1f
fadd qword [eax*8 + 0x4f00c0]
fstp qword [esp + 8]
fld qword [esp + 8]
faddp st(1)
mov edx, dword [esp + 0xf0]
mov dword [esp + 0x94], edx
fild dword [esp + 0x94]
shr edx, 0x1f
mov eax, dword [esp + 0xf4]
fxch st(1)
fmul qword [eax*8 + 0x4f1358]
fxch st(1)
fadd qword [edx*8 + 0x4f00c0]
fstp qword [esp + 8]
fld qword [esp + 8]
faddp st(1)
cmp dword [esp + 4], 0xffffffd1
jle 0x4773a8
mov eax, dword [esp + 4]
fmul qword [eax*8 + 0x4f1358]
jmp 0x4773f1
mov eax, dword [esp + 4]
mov ecx, eax
neg ecx
mov dword [esp], ebp
mov ebp, ecx
sar ebp, 3
movzx edx, word [ebp*2 + 0x4f1580]
lea esi, [ebp + 1]
shr edx, 5
cmp edx, ecx
jl 0x4773cc
mov esi, ebp
movzx edx, word [esi*2 + 0x4f1580]
mov edi, edx
shr edx, 5
and edi, 0x1f
add eax, edx
mov ebp, dword [esp]
fld qword [edi*8 + 0x4f14e0]
fmul qword [eax*8 + 0x4f1358]
fmulp st(1)
test ebx, 0x400000
je 0x477406
fstp qword [esp]
and dword [esp], 0xefffffff
fld qword [esp]
fld st(0)
fstp qword [esp + 8]
fld qword [esp + 8]
fcomp qword [0x4f0f38]
fnstsw ax
sahf
jbe 0x477422
fstp st(0)
jmp 0x477952
fld qword [0x4f0f40]
fld st(1)
fstp qword [esp + 8]
fld qword [esp + 8]
fcompp
fnstsw ax
sahf
jae 0x477a11
jp 0x477a11
test ebx, 0x10000000
jne 0x47741b
fld qword [0x4f0f48]
fld st(1)
fstp qword [esp + 8]
fld qword [esp + 8]
fcompp
fnstsw ax
sahf
jae 0x47746b
jp 0x47746b
fstp st(0)
jmp 0x477952
fstp qword [esp]
mov edx, dword [esp + 4]
mov ecx, edx
and ecx, 0x7ff00000
shr ecx, 0x14
mov eax, dword [esp]
test ecx, ecx
mov dword [esp + 8], eax
mov dword [esp + 0xac], ecx
je 0x4774aa
mov ecx, eax
or edx, 0xfff00000
mov eax, ecx
shl edx, 0xb
shr eax, 0x15
shl ecx, 0xb
or edx, eax
mov dword [esp + 8], ecx
jmp 0x47750f
test edx, edx
je 0x4774ee
shl edx, 0xc
mov dword [esp], 0
test edx, edx
jle 0x4774c9
mov eax, dword [esp]
add edx, edx
inc eax
test edx, edx
jg 0x4774bf
mov dword [esp], eax
mov eax, dword [esp]
sub dword [esp + 0xac], eax
add eax, 0xc
mov ecx, eax
mov edi, dword [esp + 8]
neg ecx
mov esi, edi
shr esi, cl
mov ecx, eax
shl edi, cl
or edx, esi
mov dword [esp + 8], edi
jmp 0x47750f
mov edx, eax
xor eax, eax
test edx, edx
jle 0x4774fd
add edx, edx
inc eax
test edx, edx
jg 0x4774f6
add eax, 0x14
sub dword [esp + 0xac], eax
mov dword [esp + 8], 0
mov edi, dword [esp + 8]
xor eax, eax
test edi, edi
setne al
mov ecx, dword [esp + 0xac]
inc eax
add ecx, 0xfffffc02
mov dword [esp + 0xac], ecx
mov dword [esp + 0xe8], eax
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], edi
mov edx, ebx
shr edx, 0x16
and edx, 7
mov eax, dword [esp + 0x9c]
or eax, edx
jne 0x477556
mov edx, 6
mov eax, edx
and eax, 2
test dl, 4
je 0x477577
test eax, eax
mov eax, 0xaaaa
jne 0x47756e
mov eax, 0xfa
mov dword [esp + 0x94], eax
jmp 0x47759e
test eax, eax
je 0x477588
mov dword [esp + 0x94], 0xfa00
jmp 0x47759e
mov eax, 0xa8a8
test dl, 1
je 0x477597
mov eax, 0
mov dword [esp + 0x94], eax
cmp edx, 2
je 0x4775a8
cmp edx, 4
jne 0x4775af
mov eax, 1
jmp 0x4775b1
xor eax, eax
mov edx, dword [esp + 0xac]
lea ecx, [edx + 0x95]
mov dword [esp + 0xa4], ecx
cmp ecx, 0x18
jle 0x4775d7
mov dword [esp + 0xa4], 0x18
jmp 0x4775e5
cmp dword [esp + 0xa4], 0
js 0x477952
mov edx, dword [esp + 0xa4]
mov esi, edx
and edx, 0x1f
xor ecx, ecx
cmp ecx, edx
mov dword [esp + 0xa4], edx
adc ecx, 0
sar esi, 5
mov dword [esp + 0xa0], esi
mov dword [esp + 0x9c], ecx
lea edi, [esi + ecx]
mov dword [esp + 0x98], edi
cmp edi, dword [esp + 0xe8]
jbe 0x47762b
test eax, eax
je 0x477922
cmp dword [esp + 0x98], 0
je 0x4778df
mov eax, edi
cmp dword [esp + 0xa4], 0
mov edx, dword [esp + eax*4 + 0x54]
mov dword [esp + 4], edx
je 0x47776b
mov edi, dword [esp + 0xa4]
mov edx, 1
neg edi
mov esi, dword [esp + 4]
mov eax, esi
lea ecx, [edi + 0x1f]
add edi, 0x20
shr eax, cl
and eax, 1
mov dword [esp], ecx
mov ecx, edi
mov dword [esp + 0x10], eax
mov eax, esi
mov edi, 1
shl edx, cl
shr eax, cl
mov ecx, dword [esp]
and eax, 1
shl edi, cl
dec edi
mov dword [esp + 8], edx
and edi, esi
mov edx, dword [esp + 0xe8]
or dword [esp + 0xec], edi
mov dword [esp + 0xc], eax
cmp edx, dword [esp + 0x98]
jbe 0x477854
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0xa0]
lea ecx, [eax + edx + 1]
cmp ecx, dword [esp + 0xe8]
ja 0x477854
xor eax, eax
cmp eax, dword [esp + 0xa4]
mov edx, dword [esp + 0xe8]
adc eax, 0
sub edx, dword [esp + 0xa0]
sub edx, eax
mov eax, edx
shr eax, 0x1f
add eax, edx
sar eax, 1
mov dword [esp + 0xe8], edx
test eax, eax
jbe 0x477e5a
xor ecx, ecx
xor edi, edi
cmp ecx, dword [esp + 0xa4]
mov esi, dword [esp + 0xec]
adc edi, 0
add edi, dword [esp + 0xa0]
lea edx, [esp + edi*4 + 0x54]
or esi, dword [edx + ecx*8 + 4]
or esi, dword [edx + ecx*8 + 8]
inc ecx
cmp ecx, eax
jb 0x477725
mov dword [esp + 0xec], esi
lea edx, [ecx + ecx + 1]
lea eax, [edx - 1]
cmp eax, dword [esp + 0xe8]
jae 0x477854
add edx, dword [esp + 0x98]
mov eax, dword [esp + 0xec]
or eax, dword [esp + edx*4 + 0x54]
mov dword [esp + 0xec], eax
jmp 0x477854
mov eax, edx
mov edx, edi
and eax, 1
mov dword [esp + 0xc], eax
mov eax, ecx
mov edi, esi
mov esi, dword [esp + edx*4 + 0x58]
mov ecx, esi
add esi, esi
shr ecx, 0x1f
lea edx, [edi + eax + 1]
or dword [esp + 0xec], esi
mov dword [esp + 0x10], ecx
cmp edx, dword [esp + 0xe8]
jae 0x47784c
mov edx, eax
mov eax, edi
lea ecx, [eax + edx + 2]
cmp ecx, dword [esp + 0xe8]
ja 0x47784c
xor edx, edx
cmp edx, dword [esp + 0xa4]
mov eax, dword [esp + 0xe8]
adc edx, 0
sub eax, dword [esp + 0xa0]
sub eax, edx
lea ecx, [eax - 1]
mov dword [esp], ecx
shr ecx, 0x1f
lea eax, [ecx + eax - 1]
sar eax, 1
test eax, eax
jbe 0x477e64
xor ecx, ecx
xor edi, edi
cmp ecx, dword [esp + 0xa4]
mov esi, dword [esp + 0xec]
adc edi, 0
add edi, dword [esp + 0xa0]
lea edx, [esp + edi*4 + 0x54]
or esi, dword [edx + ecx*8 + 8]
or esi, dword [edx + ecx*8 + 0xc]
inc ecx
cmp ecx, eax
jb 0x477809
mov dword [esp + 0xec], esi
lea edx, [ecx + ecx + 1]
mov dword [esp + 8], 1
lea eax, [edx - 1]
cmp eax, dword [esp]
jae 0x477854
add edx, dword [esp + 0x98]
mov eax, dword [esp + 0xec]
or eax, dword [esp + edx*4 + 0x58]
mov dword [esp + 0xec], eax
jmp 0x477854
mov dword [esp + 8], 1
xor edi, edi
mov eax, ebp
xor edx, edx
cmp dword [esp + 0xec], 0
mov edi, dword [esp + 0x94]
setne dl
and eax, 8
lea ecx, [eax + edx*4]
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
lea esi, [eax + edx*2]
add ecx, esi
shr edi, cl
test edi, 1
je 0x477922
mov eax, dword [esp + 4]
mov edx, dword [esp + 8]
add eax, edx
mov dword [esp + 4], eax
cmp eax, edx
jae 0x4778f5
mov esi, dword [esp + 0x9c]
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x98]
lea ecx, [ecx + esi - 1]
mov dword [esp + edx*4 + 0x54], eax
lea edx, [esp + ecx*4 + 0x54]
mov dword [esp + 0x54], 0
mov eax, dword [edx]
cmp eax, 0xffffffff
jne 0x4778db
dec ecx
lea edx, [esp + ecx*4 + 0x54]
mov eax, dword [edx]
cmp eax, 0xffffffff
je 0x4778cf
test ecx, ecx
jne 0x4778f0
inc dword [esp + 0xac]
mov dword [esp + 0x58], 0x80000000
jmp 0x477922
inc eax
mov dword [edx], eax
jmp 0x477922
cmp dword [esp + 0xa4], 0
je 0x477917
mov ecx, dword [esp + 0x98]
mov eax, edx
dec eax
not eax
mov edx, dword [esp + 4]
and edx, eax
mov dword [esp + ecx*4 + 0x54], edx
jmp 0x477922
mov edx, dword [esp + 0x98]
mov dword [esp + edx*4 + 0x54], eax
cmp dword [esp + 0xac], 0x80
jg 0x477952
cmp dword [esp + 0xac], 0xffffff82
jg 0x4779d9
cmp dword [esp + 0xac], 0xffffff6c
jl 0x477952
test ebx, 0x10000000
je 0x4779b3
test ebp, 0x80
je 0x47798a
test ebp, 8
je 0x47796a
fld dword [0x4f0fec]
jmp 0x477970
fld dword [0x4f0fe8]
mov eax, ebp
or eax, 0x9000000
test ebx, 0x4000
je 0x477a29
mov ebp, eax
jmp 0x477a29
test ebp, 8
je 0x47799a
fld dword [0x4f0ffc]
jmp 0x4779a0
fld dword [0x4f0ff8]
mov eax, ebp
or eax, 0x8000000
test ebx, 0x2000
je 0x477a29
mov ebp, eax
jmp 0x477a29
mov edx, ebp
mov ecx, dword [esp + 0xac]
or edx, 0x9000000
neg ecx
test ebx, 0x4000
mov eax, dword [esp + 0x58]
je 0x4779d2
mov ebp, edx
add ecx, 0xb
shr eax, cl
jmp 0x4779f7
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0xac]
shr eax, 8
shl edx, 0x17
and eax, 0xff7fffff
add edx, 0x3f000000
or eax, edx
mov edx, eax
or edx, 0x80000000
test ebp, 8
jne 0x477a09
mov edx, eax
mov dword [esp], edx
fld dword [esp]
jmp 0x477a29
fstp dword [esp + 0x94]
test ebp, 8
fld dword [esp + 0x94]
je 0x477a29
fchs
cmp dword [esp + 0xa8], 0
je 0x477a5d
test ebx, 0x40000
je 0x477a4d
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0xb0]
mov dword [edx], eax
jmp 0x477a5d
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0xe4]
mov dword [edx], eax
mov eax, dword [esp + 0x12c]
test eax, eax
je 0x477a6d
shr ebp, 0x18
mov dword [eax], ebp
add esp, 0x100
pop ebp
pop ebx
pop edi
pop esi
ret
mov dword [esp + 0xfc], edi
mov ebx, dword [esp + 0xa0]
mov edi, dword [esp + 0xe4]
xor ecx, ecx
mov dword [esp + 0xb0], edi
inc edi
mov dword [esp + 8], ecx
mov dword [esp + 4], ecx
mov dword [esp + 0xe4], edi
dec dword [esp + 0xf8]
je 0x476eef
mov dword [esp], edx
mov dword [esp + 0x10], esi
mov dword [esp + 0xa0], ebx
mov ecx, edi
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0xbc]
movsx eax, byte [ecx]
or ebp, 0x10
lea edi, [eax - 9]
cmp edi, 0x56
ja case.0x477ae0.10
jmp dword [edi*4 + 0x4f02a0]
cmp dword [esp + 0xc0], 0
jne 0x477b70
jmp case.0x477ae0.10
or ebp, 0x40
lea edi, [esi + esi]
inc edx
lea esi, [edi + esi*8]
lea esi, [esi + eax - 0x30]
jmp 0x477b70
test edx, edx
jne case.0x477ae0.49
or ebp, 0x40
jmp 0x477b70
test ebx, ebx
jne 0x477b70
jmp case.0x477ae0.10
or ebp, 0x80
jmp case.0x477ae0.43
cmp dword [esp + 0xc4], 0
jne 0x477b70
jmp case.0x477ae0.10
mov eax, ebp
and eax, 0x20
or eax, edx
jne case.0x477ae0.10
or ebp, 0x20
jmp 0x477b70
cmp dword [esp + 0xa4], 0
jne 0x477b70
jmp 0x477b80
mov dword [esp + 4], esi
mov dword [esp + 8], edx
mov dword [esp + 0xe4], ecx
mov edx, dword [esp]
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0xa0]
jmp 0x476eef
cmp dword [esp + 0xb8], 0
je case.0x477ae0.10
inc ecx
dec dword [esp + 0xf8]
jne 0x477ad2
jmp case.0x477ae0.10
cmp dword [esp + 0xb4], 0
je case.0x477ae0.10
mov eax, 0x30
jmp case.0x477ae0.48
fstp st(0)
mov eax, ebp
and eax, 0x1800
mov ebx, dword [esp + 0xa0]
cmp eax, 0x800
mov dword [esp + 8], eax
jne 0x477bb7
fld dword [0x4f0ff4]
jmp 0x477c13
push dword [esp + 0xf8]
push dword [esp + 0xe8]
call fcn.00478030
add esp, 8
mov dword [esp + 4], edx
fld dword [esp + 4]
sub dword [esp + 0xf8], eax
jns 0x477bef
fstp st(0)
fld dword [0x4f0ff4]
xor eax, eax
mov dword [esp + 0xf8], eax
add dword [esp + 0xe4], eax
test ebp, 2
je 0x477c13
test ebp, 8
jne 0x477c13
fstp dword [esp]
and dword [esp], 0x7fffffff
fld dword [esp]
cmp dword [esp + 0xa4], 0
je 0x477c4c
cmp dword [esp + 0xf8], 0
je 0x477c4c
mov eax, dword [esp + 0xf8]
mov edx, dword [esp + 0xe4]
cmp byte [edx], 0x20
jne 0x477c3e
inc edx
dec eax
jne 0x477c35
mov dword [esp + 0xf8], eax
mov dword [esp + 0xe4], edx
cmp dword [esp + 8], 0x800
jne 0x477c62
cmp dword [esp + 0xf8], 0
jne 0x477c78
jmp 0x477c89
mov eax, dword [esp + 0xe4]
cmp byte [eax], 0
je 0x477c89
cmp dword [esp + 0xf8], 0
je 0x477c89
mov eax, ebp
or eax, 0x3000000
test ebx, 0x8000
je 0x477c89
mov ebp, eax
and ebp, 0xfffffff7
mov ecx, ebp
or ecx, 0xa000000
cmp dword [esp + 0xb0], 0
jne 0x477ca0
mov ecx, ebp
cmp dword [esp + 0xa8], 0
je 0x477cba
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0xe4]
mov dword [edx], eax
mov eax, dword [esp + 0x12c]
test eax, eax
je 0x477cca
shr ecx, 0x18
mov dword [eax], ecx
add esp, 0x100
pop ebp
pop ebx
pop edi
pop esi
ret
mov dword [esp + 0xf8], esi
mov dword [esp + 0xe4], edi
mov ebx, dword [esp]
mov edi, dword [esp + 0xfc]
mov esi, dword [esp + 0x10]
jmp case.0x476b00.10
mov dword [esp + 0xf8], esi
mov dword [esp + 0xe4], edi
mov ebx, dword [esp]
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xfc]
mov esi, dword [esp + 0x10]
jmp 0x476d81
fstp st(0)
mov dword [esp + 0xf8], esi
mov dword [esp + 0xe4], edi
mov ebx, dword [esp]
mov edi, dword [esp + 0xfc]
mov esi, dword [esp + 0x10]
jmp 0x476d0c
mov ecx, dword [esp + 0xe8]
cmp ecx, dword [esp + 0xd0]
jae 0x477d78
inc ecx
mov eax, dword [esp + 0xf0]
mov dword [esp + 0xe8], ecx
mov dword [esp + 0xf0], ebx
mov dword [esp + ecx*4 + 0x14], eax
mov dword [esp + 0xf4], 1
jmp 0x476eb7
or dword [esp + 0xec], ebx
jmp 0x476eb7
mov dword [esp + 0xfc], edi
mov ebx, dword [esp + 0xa0]
dec dword [esp + 0xe4]
inc dword [esp + 0xf8]
jmp 0x477a86
cmp dword [esp + 0xb4], 0
je case.0x476b00.10
mov ebx, 0x30
jmp case.0x476b00.48
mov dword [esp + 0xfc], edi
mov ebx, dword [esp + 0xa0]
jmp 0x476ed9
mov eax, 1
jmp 0x477161
mov eax, dword [esp + 0xe8]
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
test ecx, ecx
jbe 0x477e53
xor edx, edx
mov dword [esp + 0xa0], ebx
lea esi, [esp + eax*4 + 0x54]
lea edi, [esp + eax*4 + 0x14]
mov eax, edx
mov ebx, dword [eax + edi]
inc edx
mov dword [eax + esi], ebx
mov ebx, dword [eax + edi - 4]
mov dword [eax + esi - 4], ebx
add eax, 0xfffffff8
cmp edx, ecx
jb 0x477e01
mov ebx, dword [esp + 0xa0]
lea eax, [edx + edx + 1]
lea edx, [eax - 1]
cmp edx, dword [esp + 0xe8]
jae 0x477202
shl eax, 2
mov edx, dword [esp + 0xe8]
neg eax
lea ecx, [esp + edx*4 + 0x14]
mov esi, dword [eax + ecx + 4]
lea edi, [esp + edx*4 + 0x54]
mov dword [eax + edi + 4], esi
jmp 0x477202
mov eax, 1
jmp 0x477e22
mov edx, 1
jmp 0x47773d
mov edx, 1
jmp 0x477821
mov edx, 1
jmp 0x47732f
mov edx, dword [esp + 0xe4]
jmp 0x4769d2
mov dword [esp + 0xb0], eax
mov ebp, 0x6000000
fldz
jmp 0x477a29
fstp st(0)
jmp 0x477359