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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x168
mov edx, dword [ebp + 0xc]
mov eax, edx
movsd xmm1, qword [ebp + 0x10]
shr eax, 0x10
push esi
push edi
movzx esi, al
mov edi, edx
movsd qword [esp + 0x40], xmm1
mov ecx, dword [esp + 0x44]
mov eax, ecx
shr edi, 0x18
and eax, 0x7fffffff
dec edi
mov dword [esp + 0x1c], esi
cmp eax, 0x7ff00000
mov dword [esp + 8], ecx
mov eax, edx
jb 0x494857
and eax, 0x2000
xor edi, edi
mov dword [esp + 0x10], eax
mov eax, ecx
and eax, 0xfffff
mov dword [esp + 0x24], edi
or eax, dword [esp + 0x40]
je 0x494778
cmp dword [esp + 0x10], edi
mov eax, 0x4e414e
mov edx, 0x6e616e
cmovne edx, eax
mov eax, dword [ebp + 0xc]
shr eax, 6
and eax, 0x20
mov dword [esp + 0x24], eax
mov edi, eax
jmp 0x4947b9
cmp dword [esp + 0x10], edi
mov edx, 0x696e66
mov eax, 0x494e46
cmovne edx, eax
mov dword [esp + 0x30], edx
test ecx, ecx
jns 0x494798
mov edi, 0x2d
jmp 0x4947b5
mov eax, dword [ebp + 0xc]
test eax, 0x200
je 0x4947a9
mov edi, 0x2b
jmp 0x4947b5
test eax, 0x800
je 0x4947bd
mov edi, 0x20
mov dword [esp + 0x24], edi
mov dword [esp + 0x30], edx
mov ecx, dword [ebp + 0x18]
xor eax, eax
test edi, edi
mov dword [esp + 8], ecx
setne al
add eax, 3
mov dword [esp + 0x20], eax
test ecx, ecx
jne 0x494800
mov edi, dword [ebp + 8]
cmp esi, eax
mov edx, eax
cmova edx, esi
mov ecx, dword [edi]
mov eax, dword [edi + 4]
sub eax, ecx
mov dword [esp + 8], ecx
cmp edx, eax
jbe 0x4947fc
mov ecx, edi
call fcn.00458540
mov ecx, eax
mov dword [esp + 8], ecx
mov eax, dword [esp + 0x20]
test dword [ebp + 0xc], 0x100
jne 0x49482a
cmp esi, eax
jbe 0x494829
mov edi, esi
sub edi, eax
push edi
push 0x20
push ecx
call fcn.004a9500
mov ecx, dword [esp + 0x14]
add esp, 0xc
add ecx, edi
dec esi
sub edi, 1
jne 0x494823
dec esi
mov eax, dword [esp + 0x24]
test eax, eax
je 0x494835
mov byte [ecx], al
inc ecx
mov edx, dword [esp + 0x30]
mov eax, edx
shr eax, 0x10
mov byte [ecx], al
mov eax, edx
shr eax, 8
mov byte [ecx + 1], al
mov byte [ecx + 2], dl
add ecx, 3
mov dword [esp + 8], ecx
jmp 0x495681
and eax, 0x30
mov dword [esp + 0x50], eax
jne 0x494bc4
test edx, 0x2000
mov dword [esp + 0x10], 0x50ad84
mov eax, 0x50ad70
mov byte [esp + 0x57], 0
cmove eax, dword [esp + 0x10]
mov dword [esp + 0x30], eax
mov eax, ecx
shr eax, 0x14
and eax, 0x7ff
mov dword [esp + 0xc], eax
test ecx, ecx
jns 0x49489e
mov byte [esp + 0x34], 0x2d
jmp 0x4948c9
test edx, 0x200
je 0x4948ad
mov byte [esp + 0x34], 0x2b
jmp 0x4948c9
test edx, 0x800
mov dword [esp + 0x10], 0x20
movzx edx, byte [esp + 0x57]
cmovne edx, dword [esp + 0x10]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x40]
and ecx, 0xfffff
mov dword [esp + 8], ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x28], edx
test eax, eax
je 0x49491a
or ecx, 0x100000
sub eax, 0x3ff
mov dword [esp + 8], ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0xc], eax
mov eax, ecx
test edi, edi
jns 0x494985
test edx, edx
je 0x494971
bsf eax, edx
mov edi, 0xd
shr eax, 2
sub edi, eax
jmp 0x4949c9
mov eax, ecx
or eax, edx
je 0x4948fa
test ecx, ecx
je 0x49492e
bsr eax, ecx
mov ecx, 0x14
jmp 0x494936
bsr eax, edx
mov ecx, 0x34
movq xmm1, qword [esp + 0x40]
sub ecx, eax
mov eax, 0xfffffc02
sub eax, ecx
mov dword [esp + 0xc], eax
movd xmm0, ecx
psllq xmm1, xmm0
movq qword [esp + 0x38], xmm1
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x28], edx
mov dword [esp + 8], eax
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], eax
jmp 0x4948fc
or eax, 0x100000
mov edi, 5
bsf eax, eax
shr eax, 2
sub edi, eax
jmp 0x4949c9
cmp edi, 0xd
jae 0x4949c9
lea eax, [edi*4]
mov edx, 0x33
sub edx, eax
xor ecx, ecx
xor eax, eax
bts eax, edx
cmp edx, 0x20
cmovae ecx, eax
xor eax, ecx
cmp edx, 0x40
mov edx, dword [esp + 0x28]
cmovae ecx, eax
add edx, eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 8]
adc edx, ecx
mov dword [esp + 8], edx
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0xc]
test eax, eax
cdq
sets cl
lea ecx, [ecx*2 + 0x2b]
mov dword [esp + 0x50], ecx
mov ecx, eax
xor ecx, edx
sub ecx, edx
mov eax, ecx
mov dword [esp + 0x38], ecx
or eax, 1
bsr eax, eax
imul edx, eax, 0x4d
mov eax, dword [ebp + 0xc]
and eax, 0x1000
or eax, edi
mov dword [esp + 0xc], eax
shr edx, 8
inc edx
cmp dword [edx*4 + 0x522188], ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0xc], eax
setne al
add eax, edx
xor edx, edx
cmp byte [esp + 0x34], dl
setne dl
add eax, ecx
add edx, 5
mov ecx, edx
mov dword [esp + 0x20], edx
mov edx, dword [ebp + 0x18]
add ecx, eax
add ecx, edi
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], ecx
test edx, edx
jne 0x494a77
cmp esi, ecx
mov eax, ecx
cmova eax, esi
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov eax, dword [eax + 4]
sub eax, edx
mov dword [esp + 0x24], edx
cmp dword [esp + 0x10], eax
jbe 0x494a77
mov edx, dword [esp + 0x10]
mov ecx, dword [ebp + 8]
call fcn.00458540
mov ecx, dword [esp + 0x20]
mov edx, eax
mov dword [esp + 0x24], edx
mov eax, dword [ebp + 0xc]
and eax, 0x500
mov dword [esp + 0x4c], eax
jne 0x494ab6
cmp esi, ecx
jbe 0x494ab1
mov eax, esi
sub eax, ecx
push eax
push 0x20
push edx
mov dword [esp + 0x1c], eax
call fcn.004a9500
mov edx, dword [esp + 0x30]
add esp, 0xc
mov eax, dword [esp + 0x10]
add edx, eax
dec esi
sub eax, 1
jne 0x494aa7
mov ecx, dword [esp + 0x20]
dec esi
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x34]
test al, al
je 0x494ac1
mov byte [edx], al
inc edx
mov eax, dword [esp + 0x30]
mov byte [edx], 0x30
mov al, byte [eax + 0x11]
mov byte [edx + 1], al
add edx, 2
cmp dword [esp + 0x4c], 0x400
mov dword [esp + 0x24], edx
jne 0x494b0c
cmp esi, ecx
jbe 0x494b07
mov eax, esi
sub eax, ecx
push eax
push 0x30
push edx
mov dword [esp + 0x58], eax
call fcn.004a9500
mov edx, dword [esp + 0x30]
add esp, 0xc
mov eax, dword [esp + 0x4c]
add edx, eax
dec esi
sub eax, 1
jne 0x494b01
dec esi
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 8]
mov eax, ecx
shr eax, 0x14
add al, 0x30
mov byte [edx], al
inc edx
cmp dword [esp + 0xc], 0
mov dword [esp + 0x24], edx
je 0x494b9d
lea eax, [edx + 1]
mov byte [edx], 0x2e
add eax, edi
mov dword [esp + 0x4c], eax
cmp edi, 0xd
jae 0x494b62
movq xmm1, qword [esp + 0x40]
mov eax, 0xd
sub eax, edi
shl eax, 2
movd xmm0, eax
psrlq xmm1, xmm0
movq qword [esp + 0x40], xmm1
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x28], eax
jmp 0x494b6e
jbe 0x494b72
mov byte [edi + edx], 0x30
dec edi
cmp edi, 0xd
ja 0x494b64
test edi, edi
je 0x494b99
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
mov eax, esi
and eax, 0xf
shrd esi, ecx, 4
shr ecx, 4
mov al, byte [eax + edx]
mov edx, dword [esp + 0x24]
mov byte [edi + edx], al
sub edi, 1
jne 0x494b76
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x30]
lea ecx, [edx + 2]
mov al, byte [eax + 0x10]
mov byte [edx], al
mov eax, dword [esp + 0x50]
mov byte [edx + 1], al
mov edx, dword [esp + 0x38]
call fcn.00493b80
mov ecx, eax
mov dword [esp + 8], ecx
jmp 0x495681
mov esi, dword [ebp + 0xc]
mov edx, ecx
shr edx, 0x14
xor al, al
and edx, 0x7ff
mov dword [esp + 0x34], 0
test ecx, ecx
jns 0x494be7
mov byte [esp + 0x24], 0x2d
jmp 0x494c10
test esi, 0x200
je 0x494bf6
mov byte [esp + 0x24], 0x2b
jmp 0x494c10
test esi, 0x800
movzx eax, al
mov dword [esp + 0x38], 0x20
cmovne eax, dword [esp + 0x38]
mov dword [esp + 0x24], eax
mov eax, edi
sar eax, 0x1f
and eax, 7
add edi, eax
cmp dword [esp + 0x50], 0x30
jne 0x494c29
dec edi
mov eax, edi
sar eax, 0x1f
xor edi, eax
mov eax, esi
and eax, 0x10
mov dword [esp + 0x38], eax
je 0x494ccb
cmp edi, 0xe
jae 0x494ccb
ucomisd xmm1, qword [0x5071f8]
lahf
test ah, 0x44
jnp 0x494ccb
mov eax, edx
shr eax, 6
movsx esi, word [eax*2 + 0x50ab30]
mov dword [esp + 0x34], esi
test esi, esi
je 0x494ccb
movsd xmm0, qword [eax*8 + 0x50ab70]
mulsd xmm0, xmm1
movsd qword [esp + 0x40], xmm0
test edx, edx
jne 0x494c90
mulsd xmm0, qword [0x50ad98]
sub esi, 0xa
mov dword [esp + 0x34], esi
movsd qword [esp + 0x40], xmm0
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
add esi, 0xfffffffe
mov dword [esp + 0x10], esi
adc eax, 0xffffffff
mov ecx, eax
mov dword [esp + 8], eax
shr ecx, 0x14
and eax, 0xfffff
or eax, 0x100000
and ecx, 0x7ff
sub ecx, 0x434
mov dword [esp + 0x70], eax
mov dword [esp + 0xc], ecx
jmp 0x494d0b
and ecx, 0xfffff
mov dword [esp + 0x70], ecx
test edx, edx
jne 0x494ce0
mov edx, 1
jmp 0x494cea
or ecx, 0x100000
mov dword [esp + 0x70], ecx
mov eax, dword [esp + 0x40]
sub edx, 0x413
xor esi, esi
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
test eax, eax
je 0x494d68
sub edx, 0x21
mov esi, eax
mov dword [esp + 0xc], edx
push dword [ebp + 0xc]
mov eax, esi
shr eax, 0x15
push eax
push 0xb
lea eax, [esp + 0x7c]
push 0
push eax
call fcn.00495a20
push dword [ebp + 0xc]
mov ecx, esi
shr ecx, 0xa
and ecx, 0x7ff
push ecx
push 0xb
push eax
lea eax, [esp + 0x94]
push eax
call fcn.00495a20
push dword [ebp + 0xc]
mov ecx, esi
and ecx, 0x3ff
add ecx, ecx
push ecx
push 0xb
push eax
lea eax, [esp + 0xa8]
push eax
call fcn.00495a20
mov edx, dword [esp + 0x48]
add esp, 0x3c
mov esi, eax
push dword [ebp + 0xc]
test edx, edx
js 0x494d8a
push 0
push edx
lea eax, [esp + 0x7c]
push esi
push eax
call fcn.00495a20
add esp, 0x14
mov esi, eax
xor ecx, ecx
mov dword [esp + 0x28], ecx
jmp 0x494daf
mov eax, edx
neg eax
push eax
lea eax, [esp + 0x78]
push esi
push eax
call fcn.00495820
add esp, 0x10
mov ecx, eax
mov dword [esp + 0x28], ecx
test esi, esi
je 0x494daf
cmp dword [esp + esi*4 + 0x70], 0
jne 0x494daf
dec esi
cmp dword [esp + 0x38], 0
je 0x49539f
mov dword [esp + 0x20], 0xffffffff
test ecx, ecx
je 0x494de2
cmp dword [esp + esi*4 + 0x70], 0
jne 0x494de2
mov esi, 0x40
dec esi
cmp dword [esp + esi*4 + 0x70], 0
je 0x494dd2
mov dword [esp + 0x20], 0xfffffdbf
mov edx, dword [esp + esi*4 + 0x70]
mov eax, edx
or eax, 1
mov dword [esp + 0x50], edx
bsr eax, eax
imul eax, eax, 0x4d
shr eax, 8
inc eax
cmp dword [eax*4 + 0x522188], edx
sbb edx, edx
neg edx
add edx, eax
mov dword [esp + 0x30], edx
lea eax, [edx + esi*8]
add eax, esi
add dword [esp + 0x20], eax
cmp dword [esp + 0x34], 0
je 0x494fe0
cmp dword [esp + 0x10], 0xfffffffe
jb 0x494e39
mov eax, dword [esp + 8]
not eax
test eax, 0xfffff
jne 0x494e39
mov eax, 1
jmp 0x494e3b
xor eax, eax
mov ecx, dword [esp + 0xc]
add ecx, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0xf4], eax
lea eax, [esi - 1]
and eax, 0x3f
mov eax, dword [esp + eax*4 + 0x70]
mov dword [esp + 0xf0], eax
lea eax, [esi - 2]
and eax, 0x3f
mov eax, dword [esp + eax*4 + 0x70]
mov dword [esp + 0xec], eax
movsx eax, byte [ecx*2 + 0x50acff]
push eax
movzx eax, byte [ecx*2 + 0x50acfe]
push eax
lea eax, [esp + 0x78]
push esi
push eax
call fcn.00495790
lea edx, [edi + 1]
add esp, 0x10
lea eax, [esp + 0xf4]
mov ecx, esi
mov dword [esp + 0x10], eax
cmp dword [esp + 0x30], edx
ja 0x494ef8
mov eax, dword [esp + esi*4 + 0x70]
cmp eax, dword [esp + 0xf4]
jne 0x494fad
sub edx, dword [esp + 0x30]
lea ecx, [esi - 1]
lea eax, [esp + 0xf0]
mov dword [esp + 0xc], edx
and ecx, 0x3f
mov dword [esp + 0x10], eax
cmp edx, 9
jb 0x494f07
mov eax, dword [esp + ecx*4 + 0x70]
cmp eax, dword [esp + 0xf0]
jne 0x494fad
lea eax, [esp + 0xec]
dec ecx
sub edx, 9
mov dword [esp + 0x10], eax
and ecx, 0x3f
jmp 0x494f03
mov eax, 9
sub eax, dword [esp + 0x30]
add edx, eax
mov dword [esp + 0xc], edx
push dword [esp + ecx*4 + 0x70]
lea eax, [esp + 0x5c]
push eax
call fcn.004956c0
mov eax, dword [esp + 0x18]
push dword [eax]
lea eax, [esp + 0x70]
push eax
call fcn.004956c0
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x68]
add esp, 0x10
lea edx, [esp + 0x64]
sub eax, 4
mov dword [esp + 8], eax
jb 0x494f59
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x494f5e
mov eax, dword [esp + 8]
add ecx, 4
add edx, 4
sub eax, 4
mov dword [esp + 8], eax
jae 0x494f40
cmp eax, 0xfffffffc
je 0x494f91
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x494fad
cmp dword [esp + 8], 0xfffffffd
je 0x494f91
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x494fad
cmp dword [esp + 8], 0xfffffffe
je 0x494f91
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x494fad
cmp dword [esp + 8], 0xffffffff
je 0x494f91
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x494fad
mov edx, dword [esp + 0xc]
xor ecx, ecx
cmp byte [esp + edx + 0x64], 0x35
setl cl
xor eax, eax
cmp byte [esp + edx + 0x58], 0x35
setl al
cmp eax, ecx
je 0x494fd8
movsd xmm1, qword [ebp + 0x10]
movsd qword [esp + 0x40], xmm1
mov ecx, dword [esp + 0x44]
mov edx, ecx
shr edx, 0x14
mov dword [esp + 8], ecx
and edx, 0x7ff
mov dword [esp + 0x34], 0
jmp 0x494ccb
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
neg ecx
mov eax, edi
sub eax, dword [esp + 0x20]
and ecx, 0x3f
lea ecx, [ecx + ecx*8]
cmp eax, ecx
jge 0x49503f
mov eax, dword [esp + 0x20]
sub eax, edi
dec eax
push eax
push 5
lea eax, [esp + 0x78]
push esi
push eax
call fcn.00495790
mov esi, eax
mov edx, dword [esp + 0x40]
add esp, 0x10
mov ecx, dword [esp + esi*4 + 0x70]
mov eax, ecx
or eax, 1
bsr eax, eax
imul eax, eax, 0x4d
shr eax, 8
inc eax
cmp dword [eax*4 + 0x522188], ecx
sbb ecx, ecx
neg ecx
add ecx, eax
xor eax, eax
cmp edx, ecx
mov ecx, dword [esp + 0x20]
setne al
add ecx, eax
jmp 0x495043
mov ecx, dword [esp + 0x20]
add ecx, dword [esp + 0x34]
mov eax, dword [ebp + 0xc]
mov dword [esp + 0xc], ecx
test al, 0x20
je 0x49513c
cmp edi, ecx
jl 0x49506d
cmp ecx, 0xfffffffc
jl 0x49506d
xor eax, eax
sub edi, ecx
test ecx, ecx
cmovns eax, esi
jmp 0x4953c2
test eax, 0x1000
jne 0x49513c
test edi, edi
je 0x49513c
cmp dword [esp + 0x1c], 5
jbe 0x49513c
mov ecx, esi
sub ecx, dword [esp + 0x28]
and ecx, 0x3f
lea eax, [ecx*8 - 1]
add eax, edx
add eax, ecx
cmp edi, eax
jb 0x4950ab
mov ecx, dword [esp + 0x28]
mov edi, eax
jmp 0x4950cd
mov ecx, edi
mov eax, 0x38e38e39
sub ecx, edx
add ecx, 9
imul ecx
mov ecx, esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
sub ecx, eax
and ecx, 0x3f
mov dword [esp + 0x28], ecx
push dword [esp + ecx*4 + 0x70]
mov eax, esi
mov edx, edi
sub eax, ecx
and eax, 0x3f
lea eax, [eax + eax*8]
sub edx, eax
lea eax, [esp + 0x5c]
sub edx, dword [esp + 0x34]
add edx, 0xa
push eax
mov dword [esp + 0x40], edx
call fcn.004956c0
add esp, 8
test edi, edi
je 0x495138
mov eax, dword [esp + 0x38]
nop
dec eax
cmp byte [esp + eax + 0x58], 0x30
jne 0x495138
dec edi
test eax, eax
jne 0x495130
mov eax, dword [esp + 0x28]
cmp eax, esi
je 0x495136
push dword [esp + eax*4 + 0x74]
inc eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x5c]
push eax
call fcn.004956c0
add esp, 8
mov eax, 9
test edi, edi
jne 0x495100
jmp 0x495138
xor edi, edi
mov ecx, dword [esp + 0xc]
mov eax, ecx
neg eax
test ecx, ecx
cmovns eax, ecx
sets cl
mov dword [esp + 0x10], eax
or eax, 1
bsr eax, eax
lea ecx, [ecx*2 + 0x2b]
imul edx, eax, 0x4d
mov eax, dword [ebp + 0xc]
and eax, 0x1000
mov dword [esp + 0x4c], ecx
or eax, edi
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x10]
shr edx, 8
inc edx
mov dword [esp + 0x38], edx
cmp dword [edx*4 + 0x522188], eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x30], eax
setne al
add ecx, eax
xor eax, eax
cmp byte [esp + 0x24], al
setne al
add eax, 3
add eax, edx
xor edx, edx
cmp dword [esp + 0x10], 0xa
setl dl
add eax, ecx
mov ecx, dword [esp + 0x1c]
add edx, eax
mov eax, dword [ebp + 0x18]
add edx, edi
mov dword [esp + 0x20], edx
mov dword [esp + 8], eax
test eax, eax
jne 0x495200
cmp ecx, edx
mov eax, edx
cmova eax, ecx
add eax, 5
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
sub eax, dword [esp + 8]
cmp dword [esp + 0xc], eax
jbe 0x495200
mov edx, dword [esp + 0xc]
mov ecx, dword [ebp + 8]
call fcn.00458540
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
and eax, 0x500
mov dword [esp + 0x50], eax
mov eax, dword [esp + 8]
jne 0x49524b
cmp ecx, edx
jbe 0x495246
sub ecx, edx
push ecx
push 0x20
push eax
mov dword [esp + 0x44], ecx
call fcn.004a9500
mov eax, dword [esp + 0x14]
add esp, 0xc
mov edx, dword [esp + 0x38]
add eax, edx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 8], eax
nop word [eax + eax]
dec ecx
sub edx, 1
jne 0x495240
dec ecx
mov dword [esp + 0x1c], ecx
cmp byte [esp + 0x24], 0
mov edx, dword [esp + 0x20]
je 0x495265
mov ecx, dword [esp + 0x24]
mov byte [eax], cl
inc eax
mov ecx, dword [esp + 0x1c]
mov dword [esp + 8], eax
cmp dword [esp + 0x50], 0x400
jne 0x4952a2
cmp ecx, edx
jbe 0x49529d
sub ecx, edx
push ecx
push 0x30
push eax
mov dword [esp + 0x44], ecx
call fcn.004a9500
mov eax, dword [esp + 0x14]
add esp, 0xc
mov edx, dword [esp + 0x38]
add eax, edx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 8], eax
dec ecx
sub edx, 1
jne 0x495297
dec ecx
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + esi*4 + 0x70]
inc eax
mov ecx, eax
mov dword [esp + 0xc], eax
call fcn.00493b80
cmp dword [esp + 0x30], 0
mov edx, eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xc]
mov al, byte [eax]
mov byte [ecx], al
je 0x49535c
mov byte [ecx + 1], 0x2e
add edi, 2
sub ecx, edx
add edi, ecx
test edi, edi
jle 0x495304
nop
cmp esi, dword [esp + 0x28]
je 0x495300
dec esi
and esi, 0x3f
push dword [esp + esi*4 + 0x70]
push edx
call fcn.004956c0
sub edi, 9
add esp, 8
mov edx, eax
test edi, edi
jg 0x4952e0
mov dword [esp + 0x34], edx
mov ecx, dword [ebp + 0xc]
and ecx, 0x1020
cmp ecx, 0x20
jne 0x49533d
mov eax, edi
sar eax, 0x1f
and eax, edi
add edx, eax
cmp byte [edx - 1], 0x30
lea eax, [edx - 1]
jne 0x49532f
mov edx, eax
cmp byte [edx - 1], 0x30
lea eax, [edx - 1]
je 0x495324
cmp byte [edx - 1], 0x2e
lea eax, [edx - 1]
cmovne eax, edx
mov edx, eax
jmp 0x495360
test edi, edi
jle 0x495358
push edi
push 0x30
push edx
call fcn.004a9500
mov edx, dword [esp + 0x40]
add esp, 0xc
add edx, edi
dec edi
test edi, edi
jg 0x495353
add edx, edi
jmp 0x495360
mov edx, dword [esp + 0xc]
mov eax, dword [ebp + 0xc]
shr eax, 8
not al
and al, 0x20
or al, 0x45
mov byte [edx], al
mov eax, dword [esp + 0x4c]
mov byte [edx + 1], al
add edx, 2
mov eax, dword [esp + 0x10]
mov dword [esp + 0x34], edx
cmp eax, 0xa
jge 0x49538d
mov byte [edx], 0x30
inc edx
mov dword [esp + 0x34], edx
mov ecx, dword [esp + 0x34]
mov edx, eax
call fcn.00493b80
mov ecx, eax
jmp 0x495679
mov eax, ecx
neg eax
and eax, 0x3f
lea eax, [eax + eax*8]
cmp edi, eax
jae 0x4953c8
mov eax, edi
not eax
push eax
push 5
lea eax, [esp + 0x78]
push esi
push eax
call fcn.00495790
add esp, 0x10
mov ecx, dword [esp + 0x28]
mov esi, eax
mov eax, dword [ebp + 0xc]
and eax, 0x1010
mov dword [esp + 0x4c], eax
cmp eax, 0x10
jne 0x495489
test edi, edi
je 0x495489
cmp dword [esp + 0x1c], 0
je 0x495489
test ecx, ecx
je 0x495487
lea eax, [ecx + ecx*8]
mov edx, 0x240
sub edx, eax
cmp edi, edx
jb 0x49540a
mov edi, edx
jmp 0x495421
lea ecx, [edi + 8]
mov eax, 0x38e38e39
mul ecx
mov ecx, 0x40
shr edx, 1
sub ecx, edx
mov dword [esp + 0x28], ecx
push dword [esp + ecx*4 + 0x70]
lea eax, [ecx*8 - 0x237]
add eax, edi
add eax, ecx
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x5c]
push eax
call fcn.004956c0
add esp, 8
test edi, edi
je 0x495489
mov eax, dword [esp + 0x38]
nop dword [eax]
dec eax
cmp byte [esp + eax + 0x58], 0x30
jne 0x495489
dec edi
test eax, eax
jne 0x495481
mov eax, dword [esp + 0x28]
cmp eax, 0x3f
je 0x495487
push dword [esp + eax*4 + 0x74]
inc eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x5c]
push eax
call fcn.004956c0
add esp, 8
mov eax, 9
test edi, edi
jne 0x495450
jmp 0x495489
xor edi, edi
mov ecx, dword [esp + esi*4 + 0x70]
mov eax, ecx
or eax, 1
bsr eax, eax
imul edx, eax, 0x4d
mov eax, dword [ebp + 0xc]
and eax, 0x1000
or eax, edi
mov dword [esp + 0xc], eax
shr edx, 8
inc edx
mov dword [esp + 0x38], edx
cmp dword [edx*4 + 0x522188], ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0xc], eax
setne al
add ecx, eax
xor eax, eax
cmp byte [esp + 0x24], al
setne al
add eax, edx
lea edx, [esi + esi*8]
add eax, ecx
mov ecx, dword [esp + 0x1c]
add edx, eax
mov eax, dword [ebp + 0x18]
add edx, edi
mov dword [esp + 8], eax
mov dword [esp + 0x20], edx
test eax, eax
jne 0x49552a
cmp ecx, edx
mov eax, edx
cmova eax, ecx
add eax, 8
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
sub eax, dword [esp + 8]
cmp dword [esp + 0x10], eax
jbe 0x49552a
mov edx, dword [esp + 0x10]
mov ecx, dword [ebp + 8]
call fcn.00458540
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
and eax, 0x500
mov dword [esp + 0x50], eax
mov eax, dword [esp + 8]
jne 0x49556f
cmp ecx, edx
jbe 0x49556a
sub ecx, edx
push ecx
push 0x20
push eax
mov dword [esp + 0x44], ecx
call fcn.004a9500
mov eax, dword [esp + 0x44]
add esp, 0xc
add dword [esp + 8], eax
mov ecx, dword [esp + 0x1c]
nop
dec ecx
sub eax, 1
jne 0x495560
mov edx, dword [esp + 0x20]
dec ecx
mov dword [esp + 0x1c], ecx
cmp byte [esp + 0x24], 0
mov eax, dword [esp + 8]
je 0x495589
mov edx, dword [esp + 0x24]
mov byte [eax], dl
inc eax
mov edx, dword [esp + 0x20]
mov dword [esp + 8], eax
cmp dword [esp + 0x50], 0x400
jne 0x4955c0
cmp ecx, edx
jbe 0x4955bb
sub ecx, edx
push ecx
push 0x30
push eax
mov dword [esp + 0x44], ecx
call fcn.004a9500
mov eax, dword [esp + 0x44]
add esp, 0xc
add dword [esp + 8], eax
mov ecx, dword [esp + 0x1c]
dec ecx
sub eax, 1
jne 0x4955b5
dec ecx
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + esi*4 + 0x70]
mov ecx, dword [esp + 8]
call fcn.00493b80
mov ecx, eax
mov dword [esp + 8], ecx
test esi, esi
je 0x4955ef
push dword [esp + esi*4 + 0x6c]
dec esi
push ecx
call fcn.004956c0
add esp, 8
mov ecx, eax
test esi, esi
jne 0x4955d7
mov dword [esp + 8], eax
cmp dword [esp + 0xc], 0
je 0x49567d
mov byte [ecx], 0x2e
inc ecx
mov dword [esp + 8], ecx
test edi, edi
jle 0x49562a
cmp esi, dword [esp + 0x28]
je 0x495626
dec esi
and esi, 0x3f
push dword [esp + esi*4 + 0x70]
push ecx
call fcn.004956c0
sub edi, 9
add esp, 8
mov ecx, eax
test edi, edi
jg 0x495606
mov dword [esp + 8], ecx
cmp dword [esp + 0x4c], 0x10
jne 0x49565c
mov eax, edi
sar eax, 0x1f
and eax, edi
add ecx, eax
cmp byte [ecx - 1], 0x30
lea eax, [ecx - 1]
jne 0x49564e
mov ecx, eax
cmp byte [ecx - 1], 0x30
lea eax, [ecx - 1]
je 0x495643
cmp byte [ecx - 1], 0x2e
lea eax, [ecx - 1]
cmovne eax, ecx
mov ecx, eax
jmp 0x495679
test edi, edi
jle 0x495677
push edi
push 0x30
push ecx
call fcn.004a9500
mov ecx, dword [esp + 0x14]
add esp, 0xc
add ecx, edi
dec edi
test edi, edi
jg 0x495672
add ecx, edi
mov dword [esp + 8], ecx
mov esi, dword [esp + 0x1c]
test dword [ebp + 0xc], 0x100
je 0x4956ac
mov edx, dword [esp + 0x20]
cmp esi, edx
jbe 0x4956ac
sub esi, edx
push esi
push 0x20
push ecx
call fcn.004a9500
mov eax, dword [esp + 0x14]
add esp, 0xc
add eax, esi
pop edi
pop esi
mov esp, ebp
pop ebp
ret
pop edi
mov eax, ecx
pop esi
mov esp, ebp
pop ebp
ret