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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x8c
mov eax, dword [esp + 0xac]
mov dword [esp + 0x58], 0
mov edi, dword [eax]
and edi, 0xffffffcf
mov dword [eax], edi
mov eax, edi
and eax, 7
cmp eax, 4
ja case.default.0x4a287e
jmp dword [eax*4 + 0x4d6b10]
push ebx
push ebx
lea eax, [esp + 0x8c]
push eax
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.004a4cb0
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x20]
fstp qword [esp + 0x88]
mov ebx, dword [esp + 0x8c]
lea ecx, [eax + edx - 1]
and ebx, 0xfffff
mov edx, ecx
or ebx, 0x3ff00000
mov dword [esp + 0x94], ecx
sar edx, 0x1f
mov dword [esp + 0x8c], ebx
fld qword [esp + 0x88]
fsub dword [0x4d6b3c]
push ecx
mov eax, edx
xor eax, ecx
fmul qword [0x4d6b40]
sub eax, edx
sub eax, 0x435
fadd qword [0x4d6b48]
fild dword [esp]
fmul qword [0x4d6b50]
add esp, 0x14
test eax, eax
faddp st(1)
jle 0x4a2918
push eax
fild dword [esp]
fmul qword [0x4d6b58]
add esp, 4
faddp st(1)
fnstcw word [esp + 0x66]
mov ax, word [esp + 0x66]
mov ah, 0xc
mov word [esp + 0x64], ax
fldcw word [esp + 0x64]
fist dword [esp + 0x28]
fldcw word [esp + 0x66]
fldz
fucomp st(1)
fnstsw ax
test ah, 0x45
je 0x4a33d9
fstp st(0)
mov eax, ecx
mov dword [esp + 0x2c], 1
shl eax, 0x14
add eax, ebx
mov dword [esp + 0x7c], eax
cmp dword [esp + 0x28], 0x16
ja 0x4a2984
mov edx, dword [esp + 0x28]
mov dword [esp + 0x2c], 0
fld qword [esp + 0x78]
fld qword [edx*8 + 0x4d6c00]
fucompp
fnstsw ax
test ah, 0x45
jne 0x4a2984
dec edx
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x10]
sub eax, ecx
dec eax
js 0x4a341f
mov dword [esp + 0x38], eax
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x28]
test eax, eax
js 0x4a33fe
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x38]
add eax, edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], 0
cmp dword [esp + 0xb0], 9
jbe 0x4a310f
mov dword [esp + 0xb0], 0
mov esi, 1
push ebp
xor ebx, ebx
fild dword [esp]
fmul qword [0x4d6b60]
add esp, 4
mov dword [esp + 0xb4], 0
mov dword [esp + 0x20], 0xffffffff
fldcw word [esp + 0x64]
fistp dword [esp + 0x60]
fldcw word [esp + 0x66]
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x30], 1
mov eax, dword [esp + 0x60]
add eax, 3
mov dword [esp + 0x84], eax
sub esp, 0xc
mov ecx, dword [esp + 0x90]
push ecx
call fcn.004a4380
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x68], eax
mov ecx, dword [edx + 0xc]
dec ecx
mov dword [esp + 0x44], ecx
add esp, 0x10
cmp ecx, 0
je 0x4a2a76
jge 0x4a2a62
mov dword [esp + 0x34], 2
and edi, 8
je 0x4a2a76
mov edx, dword [esp + 0x34]
mov eax, 3
sub eax, edx
mov dword [esp + 0x34], eax
test bl, bl
je 0x4a2be7
mov eax, esi
test al, al
je 0x4a2be7
mov edx, dword [esp + 0x34]
or edx, dword [esp + 0x28]
jne 0x4a2be7
fld qword [esp + 0x78]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x84], 0
fst qword [esp + 0x50]
test eax, eax
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
jle 0x4a3928
mov eax, dword [esp + 0x28]
mov edi, 2
and eax, 0xf
fld qword [eax*8 + 0x4d6c00]
mov eax, dword [esp + 0x28]
sar eax, 4
test al, 0x10
je 0x4a3700
fxch st(1)
fdiv qword [0x4d6ba0]
and eax, 0xf
mov di, 3
fst qword [esp + 0x78]
fstp qword [esp + 8]
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0xc]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
fld qword [esp + 8]
test eax, eax
je 0x4a2b39
fstp st(0)
mov edx, 0x4d6b80
xor ecx, ecx
test al, 1
je 0x4a2b1e
fmul qword [edx]
inc edi
inc ecx
add edx, 8
sar eax, 1
jne 0x4a2b17
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0x84], ecx
fld qword [esp + 8]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4a349d
fld dword [0x4d6b68]
fucomp st(1)
fnstsw ax
test ah, 0x45
jne 0x4a349d
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x4a349d
mov esi, dword [esp + 0x24]
test esi, esi
jle 0x4a3aff
fmul dword [0x4d6b6c]
mov esi, dword [esp + 0x28]
dec esi
inc edi
mov edx, dword [esp + 0x24]
fst qword [esp + 0x78]
lea ecx, [esp + 0x70]
push edi
fild dword [esp]
fmul st(1)
add esp, 4
fadd dword [0x4d6b70]
fstp qword [esp + 0x70]
mov ebx, dword [ecx + 4]
sub ebx, 0x3400000
test edx, edx
mov dword [ecx + 4], ebx
jne 0x4a361a
fstp st(1)
fsub dword [0x4d6b74]
fst qword [esp + 0x78]
fld qword [esp + 0x70]
fxch st(1)
fucom st(1)
fnstsw ax
test ah, 0x45
je 0x4a391b
fxch st(1)
fchs
fucompp
fnstsw ax
test ah, 0x45
je 0x4a34ac
fld qword [esp + 0x50]
fstp qword [esp + 0x78]
mov eax, dword [esp + 0x5c]
test eax, eax
js 0x4a2bfa
cmp dword [esp + 0x28], 0xe
jle 0x4a3154
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x4a3432
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x48], 0
test edi, edi
jle 0x4a2c49
mov ebx, dword [esp + 0x38]
test ebx, ebx
jle 0x4a2c49
mov eax, dword [esp + 0x38]
cmp eax, edi
jle 0x4a2c2c
mov eax, edi
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x38]
sub ecx, eax
sub edx, eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x14], ecx
sub edi, eax
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x4a2c9f
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4a375b
test esi, esi
jle 0x4a2c93
push eax
push eax
push esi
mov ebp, dword [esp + 0x54]
push ebp
call fcn.004a4bb0
mov dword [esp + 0x58], eax
pop ecx
pop ebx
mov edx, dword [esp + 0x48]
push edx
push eax
call fcn.004a4930
pop ebp
mov ecx, dword [esp + 0x4c]
mov ebx, eax
push ecx
call fcn.004a45e0
mov dword [esp + 0x50], ebx
add esp, 0x10
mov eax, dword [esp + 0x18]
sub eax, esi
jne 0x4a383f
sub esp, 0xc
push 1
call fcn.004a4aa0
mov dword [esp + 0x5c], eax
add esp, 0x10
mov ecx, dword [esp + 0x3c]
test ecx, ecx
jle 0x4a2ccc
push edx
push edx
mov ebp, dword [esp + 0x44]
push ebp
push eax
call fcn.004a4bb0
mov dword [esp + 0x5c], eax
add esp, 0x10
cmp dword [esp + 0xb0], 1
jle 0x4a321b
xor ebx, ebx
mov ecx, dword [esp + 0x3c]
mov edx, 1
test ecx, ecx
jne 0x4a3602
mov ecx, dword [esp + 0x38]
lea eax, [edx + ecx]
mov edx, 0x1c
and eax, 0x1f
je 0x4a33b7
mov dl, 0x20
sub edx, eax
mov dword [esp + 0x84], edx
cmp edx, 4
jle 0x4a33ae
lea eax, [edx - 4]
mov edx, dword [esp + 0x14]
add edx, eax
add ecx, eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x14], edx
add edi, eax
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x4a2d52
push edx
push edx
mov eax, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x4c]
push eax
call fcn.004a4830
mov dword [esp + 0x50], eax
add esp, 0x10
mov eax, dword [esp + 0x38]
test eax, eax
jle 0x4a2d72
push eax
push eax
mov eax, dword [esp + 0x40]
push eax
mov eax, dword [esp + 0x58]
push eax
call fcn.004a4830
mov dword [esp + 0x5c], eax
add esp, 0x10
mov ebp, dword [esp + 0x2c]
test ebp, ebp
jne 0x4a359c
mov ebp, dword [esp + 0x20]
test ebp, ebp
jle 0x4a3778
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4a34e0
test edi, edi
jle 0x4a2dae
push ebp
push ebp
push edi
mov esi, dword [esp + 0x54]
push esi
call fcn.004a4830
mov dword [esp + 0x58], eax
add esp, 0x10
mov eax, dword [esp + 0x48]
test ebx, ebx
jne 0x4a3b2a
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x84], 1
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], eax
mov edi, dword [esp + 0x58]
push eax
push eax
mov eax, dword [esp + 0x54]
push eax
mov eax, dword [esp + 0x4c]
push eax
call fcn.004a4140
add eax, 0x30
mov dword [esp + 0x2c], eax
pop esi
pop ebp
mov ebp, 1
mov ebx, dword [esp + 0x4c]
push ebx
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.004a4430
mov esi, eax
pop eax
pop edx
mov eax, dword [esp + 0x50]
push eax
mov eax, dword [esp + 0x58]
push eax
call fcn.004a46c0
mov ebx, eax
add esp, 0x10
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4a32db
sub esp, 0xc
push ebx
call fcn.004a45e0
add esp, 0x10
mov eax, dword [esp + 0xb0]
or eax, ebp
jne 0x4a2e53
mov edx, dword [esp + 0xa8]
mov eax, dword [edx]
and eax, 1
or eax, dword [esp + 0x34]
je 0x4a3c5e
test esi, esi
js 0x4a39db
or esi, dword [esp + 0xb0]
jne 0x4a2e74
mov edx, dword [esp + 0xa8]
test byte [edx], 1
je 0x4a39db
test ebp, ebp
jle 0x4a3260
cmp dword [esp + 0x34], 2
je 0x4a3260
cmp dword [esp + 0x1c], 0x39
je 0x4a3c4a
mov al, byte [esp + 0x1c]
lea ebx, [edi + 1]
inc eax
mov esi, 0x20
mov byte [edi], al
sub esp, 0xc
mov eax, dword [esp + 0x58]
push eax
call fcn.004a45e0
add esp, 0x10
mov eax, dword [esp + 0x48]
test eax, eax
je 0x4a2eeb
mov eax, dword [esp + 0x44]
test eax, eax
je 0x4a2edb
mov ecx, dword [esp + 0x48]
cmp dword [esp + 0x44], ecx
je 0x4a2edb
sub esp, 0xc
mov eax, dword [esp + 0x50]
push eax
call fcn.004a45e0
add esp, 0x10
sub esp, 0xc
mov ebp, dword [esp + 0x54]
push ebp
call fcn.004a45e0
add esp, 0x10
sub esp, 0xc
mov edi, dword [esp + 0x4c]
push edi
call fcn.004a45e0
mov byte [ebx], 0
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0xc8]
add esp, 0x10
inc eax
mov dword [edx], eax
mov ecx, dword [esp + 0xbc]
test ecx, ecx
je 0x4a2f20
mov ecx, dword [esp + 0xbc]
mov dword [ecx], ebx
mov eax, dword [esp + 0xac]
mov edx, dword [eax]
or edx, esi
mov dword [eax], edx
lea esi, [esi]
mov eax, dword [esp + 0x58]
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0xa0]
xor edx, edx
mov ebp, dword [eax]
cmp ebp, 0x20
jle 0x4a2f5b
mov eax, 0x20
add eax, eax
inc edx
cmp ebp, eax
jg 0x4a2f54
sub esp, 0xc
push edx
call fcn.004a4620
mov dword [esp + 0x50], eax
lea eax, [ebp - 1]
mov edx, dword [esp + 0xb8]
mov esi, dword [esp + 0x50]
sar eax, 5
add esi, 0x14
mov ecx, esi
add esp, 0x10
lea ebx, [edx + eax*4]
mov eax, dword [edx]
add edx, 4
mov dword [ecx], eax
add ecx, 4
cmp ebx, edx
jae 0x4a2f84
mov edx, ecx
mov ecx, dword [esp + 0x40]
sub edx, esi
sar edx, 2
lea eax, [ecx + edx*4 + 0x14]
mov ecx, dword [eax - 4]
dec edx
test ecx, ecx
jne 0x4a30b4
sub eax, 4
test edx, edx
jne 0x4a2fa1
mov eax, dword [esp + 0x40]
mov dword [esp + 0x10], 0
mov dword [eax + 0x10], 0
sub esp, 0xc
mov eax, dword [esp + 0x4c]
push eax
call fcn.004a4fc0
mov dword [esp + 0x94], eax
add esp, 0x10
test eax, eax
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x5c], edx
jne 0x4a30dc
mov eax, dword [esp + 0x40]
mov edx, dword [eax + 0x10]
test edx, edx
jne 0x4a2885
sub esp, 0xc
push eax
call fcn.004a45e0
add esp, 0x10
mov edx, dword [esp + 0xb8]
mov dword [edx], 1
push edi
push 1
mov esi, dword [esp + 0xc4]
push esi
push 0x4d6b0d
call fcn.004a43c0
mov dword [esp + 0x68], eax
add esp, 0x10
mov eax, dword [esp + 0x58]
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 0xb8]
mov dword [ecx], 0xffff8000
push esi
push 3
mov ebx, dword [esp + 0xc4]
push ebx
push 0x4d6b09
call fcn.004a43c0
mov dword [esp + 0x68], eax
add esp, 0x10
mov eax, dword [esp + 0x58]
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [esp + 0xb8]
mov dword [edx], 0xffff8000
push ebp
push 8
mov edi, dword [esp + 0xc4]
push edi
push str.Infinity
call fcn.004a43c0
mov dword [esp + 0x68], eax
add esp, 0x10
mov eax, dword [esp + 0x58]
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 0x40]
lea eax, [edx + 1]
mov dword [ecx + 0x10], eax
shl eax, 5
mov dword [esp + 0x10], eax
bsr eax, dword [ecx + edx*4 + 0x14]
mov edx, dword [esp + 0x10]
xor eax, 0x1f
sub edx, eax
mov dword [esp + 0x10], edx
jmp 0x4a2fc7
push esi
push esi
push eax
mov ebx, dword [esp + 0x4c]
push ebx
call fcn.004a4ef0
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0xb4]
add ecx, eax
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x20]
sub ecx, eax
mov dword [esp + 0x20], ecx
add esp, 0x10
jmp 0x4a2ff1
cmp dword [esp + 0xb0], 5
jg 0x4a3201
mov eax, 1
mov esi, 1
cmp dword [esp + 0xb0], 5
jbe 0x4a32f2
mov bl, 1
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x30], 1
jmp 0x4a2a2d
mov eax, dword [esp + 0x28]
fld qword [eax*8 + 0x4d6c00]
mov eax, dword [esp + 0xb4]
test eax, eax
js 0x4a37e2
fnstcw word [esp + 0x66]
mov ax, word [esp + 0x66]
mov ah, 0xc
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x84], 1
mov word [esp + 0x64], ax
jmp 0x4a31b3
mov eax, dword [esp + 0x84]
cmp dword [esp + 0x20], eax
je 0x4a3707
fmul dword [0x4d6b6c]
inc eax
mov dword [esp + 0x84], eax
fstp qword [esp + 0x78]
fld qword [esp + 0x78]
fld st(0)
fdiv st(2)
fldcw word [esp + 0x64]
fistp dword [esp + 0x60]
fldcw word [esp + 0x66]
mov edx, dword [esp + 0x60]
push edx
fild dword [esp]
fmul st(2)
add esp, 4
lea eax, [edx + 0x30]
fsubp st(1)
fstp qword [esp + 0x78]
mov byte [ebx], al
inc ebx
fld qword [esp + 0x78]
fldz
fxch st(1)
fucom st(1)
fnstsw ax
fstp st(1)
and ah, 0x45
xor ah, 0x40
jne 0x4a3190
fstp st(0)
fstp st(0)
xor esi, esi
jmp 0x4a2eeb
mov eax, dword [esp + 0xb0]
xor esi, esi
sub eax, 4
mov dword [esp + 0xb0], eax
xor eax, eax
jmp 0x4a3127
cmp dword [esp + 0x10], 1
jne 0x4a2cda
mov edx, dword [esp + 0xa0]
mov eax, dword [edx + 4]
inc eax
cmp dword [esp + 0xa4], eax
jle 0x4a2cda
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x14]
inc ebx
inc esi
mov dword [esp + 0x38], ebx
mov ebx, 1
mov dword [esp + 0x14], esi
jmp 0x4a2cdc
mov dl, byte [esp + 0x1c]
mov byte [edi], dl
inc edi
mov ecx, dword [esp + 0x20]
cmp dword [esp + 0x84], ecx
je 0x4a3549
push ebx
push 0
push 0xa
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.004a4ac0
mov dword [esp + 0x50], eax
add esp, 0x10
mov eax, dword [esp + 0x48]
cmp dword [esp + 0x44], eax
je 0x4a3393
push eax
push 0
push 0xa
mov ebp, dword [esp + 0x50]
push ebp
call fcn.004a4ac0
mov dword [esp + 0x54], eax
add esp, 0xc
push 0
push 0xa
mov esi, dword [esp + 0x54]
push esi
call fcn.004a4ac0
mov dword [esp + 0x58], eax
add esp, 0x10
mov ebx, dword [esp + 0x84]
inc ebx
mov dword [esp + 0x84], ebx
jmp 0x4a2dd5
push ebp
push ebp
push ebx
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.004a4430
add esp, 0x10
mov ebp, eax
jmp 0x4a2e26
mov edx, dword [esp + 0xb0]
jmp dword [edx*4 + 0x4d6b24]
mov dword [esp + 0x30], 1
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0xb4]
lea eax, [eax + edx + 1]
mov dword [esp + 0x20], eax
mov dword [esp + 0x84], eax
mov ebx, dword [esp + 0x20]
dec eax
mov dword [esp + 0x24], eax
test ebx, ebx
jle 0x4a3add
cmp dword [esp + 0x20], 0xe
setbe bl
jmp 0x4a2a2d
mov dword [esp + 0x30], 1
mov eax, dword [esp + 0xb4]
test eax, eax
jle 0x4a3aed
mov ecx, dword [esp + 0xb4]
cmp ecx, 0xe
mov dword [esp + 0x84], ecx
setbe bl
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ecx
jmp 0x4a2a2d
mov dword [esp + 0x30], 0
jmp 0x4a3308
mov dword [esp + 0x30], 0
jmp 0x4a3348
mov esi, eax
jmp 0x4a29e1
push edx
push 0
push 0xa
push eax
call fcn.004a4ac0
mov dword [esp + 0x58], eax
mov dword [esp + 0x54], eax
add esp, 0x10
jmp 0x4a32c7
je 0x4a2d32
add edx, 0x1c
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x38]
add ebp, edx
add esi, edx
add edi, edx
mov dword [esp + 0x84], edx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x38], esi
jmp 0x4a2d32
fild dword [esp + 0x28]
fucompp
fnstsw ax
and ah, 0x45
xor ah, 0x40
mov edx, dword [esp + 0x28]
setne al
and eax, 0xff
sub edx, eax
mov dword [esp + 0x28], edx
jmp 0x4a2945
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
sub eax, ecx
mov dword [esp + 0x3c], 0
neg ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
jmp 0x4a29c3
neg eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x38], 0
jmp 0x4a299d
cmp dword [esp + 0xb0], 1
jle 0x4a3990
mov eax, dword [esp + 0x20]
dec eax
cmp dword [esp + 0x18], eax
jl 0x4a381e
mov esi, dword [esp + 0x18]
sub esi, eax
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x84], eax
test eax, eax
js 0x4a3b08
mov eax, dword [esp + 0x84]
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x38]
add edx, eax
add ebp, eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x38], ebp
sub esp, 0xc
push 1
call fcn.004a4aa0
mov dword [esp + 0x58], eax
add esp, 0x10
jmp 0x4a2c16
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x28]
jmp 0x4a2b84
fstp st(0)
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov edx, dword [esp + 0xb4]
mov ebx, dword [esp + 0x58]
xor edx, 0xffffffff
mov esi, 0x10
mov dword [esp + 0x28], edx
mov dword [esp + 0x44], 0
jmp 0x4a2ea1
mov edi, dword [esp + 0x58]
mov dword [esp + 0x84], 1
jmp 0x4a3516
push eax
push 0
push 0xa
mov eax, dword [esp + 0x4c]
push eax
call fcn.004a4ac0
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x94]
inc eax
mov dword [esp + 0x94], eax
add esp, 0x10
push ecx
push ecx
mov edx, dword [esp + 0x54]
push edx
mov eax, dword [esp + 0x4c]
push eax
call fcn.004a4140
add eax, 0x30
mov dword [esp + 0x2c], eax
add esp, 0x10
mov byte [edi], al
inc edi
mov edx, dword [esp + 0x20]
cmp edx, dword [esp + 0x84]
jg 0x4a34f1
mov dword [esp + 0x44], 0
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4a3a84
cmp dword [esp + 0x34], 2
je 0x4a3abc
mov ecx, dword [esp + 0x40]
cmp dword [ecx + 0x10], 1
jle 0x4a3c7c
dec edi
mov al, byte [edi]
cmp al, 0x39
jne 0x4a3b1a
cmp edi, dword [esp + 0x58]
jne 0x4a356e
mov eax, dword [esp + 0x28]
mov esi, 0x20
inc eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x58]
mov ebx, eax
inc ebx
mov byte [eax], 0x31
jmp 0x4a2ea1
push esi
push esi
mov ecx, dword [esp + 0x54]
push ecx
mov edx, dword [esp + 0x4c]
push edx
call fcn.004a4430
add esp, 0x10
test eax, eax
jns 0x4a2d7e
push eax
push 0
push 0xa
mov eax, dword [esp + 0x4c]
push eax
call fcn.004a4ac0
mov dword [esp + 0x50], eax
add esp, 0x10
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4a35ec
push eax
push 0
push 0xa
mov eax, dword [esp + 0x54]
push eax
call fcn.004a4ac0
mov dword [esp + 0x58], eax
add esp, 0x10
mov eax, dword [esp + 0x28]
dec eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x20], eax
jmp 0x4a2d7e
mov ecx, dword [esp + 0x4c]
mov dl, 0x20
mov eax, dword [ecx + 0x10]
bsr eax, dword [ecx + eax*4 + 0x10]
xor eax, 0x1f
sub edx, eax
jmp 0x4a2ced
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4a3858
fstp st(0)
fld st(0)
fnstcw word [esp + 0x66]
fmul dword [0x4d6b78]
mov ax, word [esp + 0x66]
mov ah, 0xc
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x84], 0
mov word [esp + 0x64], ax
fdiv qword [edx*8 + 0x4d6bf8]
fsub qword [esp + 0x70]
fstp qword [esp + 0x70]
jmp 0x4a369e
fld st(2)
fsub st(2)
fxch st(1)
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x45
je 0x4a3981
mov eax, dword [esp + 0x84]
inc eax
mov dword [esp + 0x84], eax
cmp edx, eax
jle 0x4a3afd
fld dword [0x4d6b6c]
fmul st(1), st(0)
fxch st(1)
fstp qword [ecx]
fmulp st(1)
fstp qword [esp + 0x78]
fld qword [esp + 0x78]
fld st(0)
fdiv st(2)
fldcw word [esp + 0x64]
fistp dword [esp + 0x60]
fldcw word [esp + 0x66]
mov eax, dword [esp + 0x60]
push eax
add eax, 0x30
fild dword [esp]
fmul st(2)
add esp, 4
fsubp st(1)
fstp qword [esp + 0x78]
mov byte [ebx], al
inc ebx
fld qword [esp + 0x78]
fld qword [ecx]
fucom st(1)
fnstsw ax
test ah, 0x45
jne 0x4a3660
fstp st(0)
fstp st(1)
fldz
fxch st(1)
fucompp
fnstsw ax
and ah, 0x45
xor ah, 0x40
je 0x4a3c53
mov dword [esp + 0x28], esi
mov esi, 0x10
jmp 0x4a2eeb
fstp st(1)
jmp 0x4a2afe
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4a394c
fstp st(0)
fstp st(0)
cmp dword [esp + 0x34], 1
je 0x4a372c
mov esi, 0x10
jmp 0x4a2eeb
fstp st(0)
fstp st(0)
dec ebx
mov al, byte [ebx]
cmp al, 0x39
jne 0x4a374d
cmp ebx, dword [esp + 0x58]
jne 0x4a372c
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x58]
inc eax
mov ebx, edx
mov dword [esp + 0x28], eax
mov byte [edx], 0x30
mov al, 0x30
inc eax
mov esi, 0x20
mov byte [ebx], al
inc ebx
jmp 0x4a2eeb
push ebp
push ebp
mov esi, dword [esp + 0x20]
push esi
mov ebx, dword [esp + 0x4c]
push ebx
call fcn.004a4bb0
mov dword [esp + 0x50], eax
add esp, 0x10
jmp 0x4a2c9f
cmp dword [esp + 0xb0], 2
jle 0x4a2d8a
mov edi, dword [esp + 0x20]
test edi, edi
js 0x4a34bc
push esi
push 0
push 5
mov ebx, dword [esp + 0x58]
push ebx
call fcn.004a4ac0
mov dword [esp + 0x5c], eax
pop edx
pop ecx
push eax
mov eax, dword [esp + 0x4c]
push eax
call fcn.004a4430
add esp, 0x10
test eax, eax
jle 0x4a34bc
mov ecx, dword [esp + 0x58]
mov esi, 0x20
mov ebx, ecx
mov byte [ecx], 0x31
inc ebx
mov eax, dword [esp + 0x28]
mov dword [esp + 0x44], 0
inc eax
mov dword [esp + 0x28], eax
jmp 0x4a2ea1
cmp dword [esp + 0x20], 0
jg 0x4a316e
jl 0x4a34aa
fmul dword [0x4d6b74]
fld qword [esp + 0x78]
fxch st(1)
fucompp
fnstsw ax
test ah, 5
je 0x4a34ac
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
jmp 0x4a37bd
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x3c]
sub eax, esi
mov ecx, dword [esp + 0x18]
add ebx, eax
add ecx, eax
xor esi, esi
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x18], ecx
jmp 0x4a3455
push edx
push edx
push eax
mov eax, dword [esp + 0x4c]
push eax
call fcn.004a4bb0
mov dword [esp + 0x50], eax
add esp, 0x10
jmp 0x4a2c9f
fld qword [esp + 0x70]
fnstcw word [esp + 0x66]
fmul qword [edx*8 + 0x4d6bf8]
mov ax, word [esp + 0x66]
mov ah, 0xc
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x84], 1
mov word [esp + 0x64], ax
fstp qword [esp + 0x70]
jmp 0x4a38be
push eax
fild dword [esp]
fmul st(2)
add esp, 4
fsubp st(1)
fstp qword [esp + 0x78]
add eax, 0x30
mov byte [ebx], al
inc ebx
mov eax, dword [esp + 0x84]
cmp eax, edx
je 0x4a38da
fld dword [0x4d6b6c]
fmul qword [esp + 0x78]
inc eax
mov dword [esp + 0x84], eax
fst qword [esp + 0x78]
fld st(0)
fdiv st(2)
fldcw word [esp + 0x64]
fistp dword [esp + 0x60]
fldcw word [esp + 0x66]
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x4a3888
fstp st(0)
jmp 0x4a3897
fmul dword [0x4d6b78]
fld qword [esp + 0x78]
fld qword [ecx]
fld st(0)
fadd st(3)
fxch st(2)
fucom st(2)
fnstsw ax
fstp st(2)
test ah, 0x45
je 0x4a3981
fsubp st(2)
fxch st(1)
fucomp st(1)
fnstsw ax
test ah, 0x45
je 0x4a390f
fstp st(0)
jmp 0x4a2bdf
dec ebx
cmp byte [ebx], 0x30
je 0x4a390f
inc ebx
jmp 0x4a36de
fstp st(0)
fstp st(0)
mov dword [esp + 0x28], esi
jmp 0x4a380c
fstp st(0)
mov edx, dword [esp + 0x28]
neg edx
jne 0x4a3b66
fld qword [esp + 0x50]
mov edi, 2
fld dword [0x4d6b68]
fxch st(1)
jmp 0x4a2b39
fld st(0)
faddp st(1)
fst qword [esp + 0x78]
fucom st(1)
fnstsw ax
test ah, 0x45
je 0x4a3728
fxch st(1)
fucompp
fnstsw ax
and ah, 0x45
xor ah, 0x40
jne 0x4a371e
and edx, 1
jne 0x4a372c
jmp 0x4a371e
fstp st(0)
fstp st(0)
fstp st(0)
mov dword [esp + 0x28], esi
jmp 0x4a372c
mov eax, ebp
mov ebp, dword [esp + 0x10]
sub eax, ebp
mov edx, dword [esp + 0xa0]
mov ecx, dword [edx + 4]
lea edx, [eax + 1]
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x5c]
sub edx, eax
cmp edx, ecx
jge 0x4a39ce
mov edi, dword [esp + 0x5c]
sub edi, ecx
mov dword [esp + 0x5c], edi
mov ecx, dword [esp + 0x5c]
lea eax, [ecx + 1]
mov dword [esp + 0x84], eax
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
jmp 0x4a346c
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4a3bcd
mov ecx, dword [esp + 0x40]
cmp dword [ecx + 0x10], 1
jle 0x4a3bc2
cmp dword [esp + 0x34], 2
jne 0x4a3a42
mov esi, 0x10
mov al, byte [esp + 0x1c]
lea ebx, [edi + 1]
mov byte [edi], al
jmp 0x4a2ea1
mov dword [esp + 0x44], eax
push eax
push 0
push 0xa
inc edi
mov ebp, dword [esp + 0x4c]
push ebp
call fcn.004a4ac0
mov dword [esp + 0x50], eax
pop ecx
pop esi
mov edx, dword [esp + 0x54]
push edx
push eax
call fcn.004a4140
mov dword [esp + 0x58], ebx
add eax, 0x30
mov dword [esp + 0x2c], eax
add esp, 0x10
push eax
push eax
mov eax, dword [esp + 0x50]
push eax
mov eax, dword [esp + 0x58]
push eax
call fcn.004a4430
add esp, 0x10
test eax, eax
jle 0x4a3c31
mov al, byte [esp + 0x1c]
mov byte [edi], al
push eax
push 0
push 0xa
mov eax, dword [esp + 0x54]
push eax
call fcn.004a4ac0
add esp, 0x10
mov ebx, eax
mov edx, dword [esp + 0x48]
cmp dword [esp + 0x44], edx
jne 0x4a3a13
jmp 0x4a3a0f
push ebp
push ebp
push 1
mov esi, dword [esp + 0x4c]
push esi
call fcn.004a4830
mov dword [esp + 0x50], eax
pop ecx
pop ebx
mov edx, dword [esp + 0x54]
push edx
push eax
call fcn.004a4430
add esp, 0x10
cmp eax, 0
jg 0x4a356e
jne 0x4a3abc
test byte [esp + 0x1c], 1
jne 0x4a356e
mov edx, dword [esp + 0x40]
cmp dword [edx + 0x10], 1
jle 0x4a3c8e
mov esi, 0x10
dec edi
cmp byte [edi], 0x30
je 0x4a3acf
lea ebx, [edi + 1]
jmp 0x4a2ea1
mov dword [esp + 0x84], 1
jmp 0x4a3333
mov dword [esp + 0xb4], 1
jmp 0x4a3357
fstp st(0)
fstp st(0)
fstp st(0)
jmp 0x4a2bdf
sub edi, eax
mov dword [esp + 0x84], 0
jmp 0x4a346c
inc eax
lea ebx, [edi + 1]
mov esi, 0x20
mov byte [edi], al
jmp 0x4a2ea1
sub esp, 0xc
mov eax, dword [esp + 0x54]
mov ebx, dword [eax + 4]
push ebx
call fcn.004a4620
mov edx, dword [esp + 0x58]
cld
mov ecx, dword [edx + 0x10]
lea edi, [eax + 0xc]
lea esi, [edx + 0xc]
lea ecx, [ecx*4 + 8]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
pop edx
pop ecx
push 1
push eax
call fcn.004a4830
add esp, 0x10
jmp 0x4a2dba
mov eax, edx
and eax, 0xf
fld qword [esp + 0x50]
fmul qword [eax*8 + 0x4d6c00]
mov eax, edx
sar eax, 4
fst qword [esp + 0x78]
je 0x4a3cb6
fstp st(0)
mov edx, 0x4d6b80
mov edi, 2
xor ecx, ecx
test al, 1
je 0x4a3ba2
fld qword [esp + 0x78]
fmul qword [edx]
inc edi
fstp qword [esp + 0x78]
inc ecx
add edx, 8
sar eax, 1
jne 0x4a3b93
fld qword [esp + 0x78]
fld dword [0x4d6b68]
fxch st(1)
mov dword [esp + 0x84], ecx
jmp 0x4a2b39
mov eax, dword [ecx + 0x14]
test eax, eax
jne 0x4a39f5
xor esi, esi
test ebp, ebp
jle 0x4a3c13
push ebp
push ebp
push 1
mov esi, dword [esp + 0x4c]
push esi
call fcn.004a4830
mov dword [esp + 0x50], eax
pop ecx
pop ebx
mov edx, dword [esp + 0x54]
push edx
push eax
call fcn.004a4430
add esp, 0x10
cmp eax, 0
jle 0x4a3ca0
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], 0x3a
je 0x4a3c4a
mov esi, 0x20
mov ecx, dword [esp + 0x40]
cmp dword [ecx + 0x10], 1
jg 0x4a39fc
mov ebp, dword [ecx + 0x14]
test ebp, ebp
je 0x4a3a01
jmp 0x4a39fc
mov eax, dword [esp + 0x1c]
mov esi, 0x20
inc eax
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], 0x3a
jne 0x4a3a01
mov byte [edi], 0x39
inc edi
jmp 0x4a356e
mov dword [esp + 0x28], esi
xor esi, esi
jmp 0x4a2eeb
cmp dword [esp + 0x1c], 0x39
je 0x4a3c4a
test esi, esi
jle 0x4a3cc8
mov eax, dword [esp + 0x1c]
mov esi, 0x20
inc eax
mov dword [esp + 0x1c], eax
jmp 0x4a3a01
mov eax, dword [ecx + 0x14]
test eax, eax
jne 0x4a356e
xor esi, esi
jmp 0x4a3acf
mov eax, dword [edx + 0x14]
test eax, eax
jne 0x4a3aca
xor esi, esi
jmp 0x4a3acf
jne 0x4a3c0e
test byte [esp + 0x1c], 1
je 0x4a3c0e
jmp 0x4a3bfe
mov edi, 2
fld dword [0x4d6b68]
fxch st(1)
jmp 0x4a2b39
mov ecx, dword [esp + 0x40]
cmp dword [ecx + 0x10], 1
jg 0x4a39fc
mov edx, dword [ecx + 0x14]
xor esi, esi
test edx, edx
je 0x4a3a01
jmp 0x4a39fc