Function at 0x4187f0
Capabilities:
Check os version
Get number of processors

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push 0xffffffffffffffff
push 0x443492
mov eax, dword fs:[0]
push eax
sub esp, 0x15c
mov eax, dword [0x56211c]
xor eax, esp
mov dword [esp + 0x154], eax
push esi
push edi
mov eax, dword [0x56211c]
xor eax, esp
push eax
lea eax, [esp + 0x168]
mov dword fs:[0], eax
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], eax
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x170], 0
lea ecx, [esp + 0x34]
push 0x32
call fcn.0041c4e0
mov edx, dword [esp + 0x1c]
xor esi, esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x30], esi
cmp byte [edx], 0
je case.default.0x41929b
lea esp, [esp]
cmp byte [edx], 0x25
je 0x4188f0
mov ecx, dword [esp + 0x24]
lea edx, [esi + 1]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x2c], edx
mov eax, dword [ecx + 4]
sub eax, dword [ecx]
cmp edx, eax
jb 0x4188c7
lea edx, [esp + 0x1a]
mov byte [esp + 0x1a], 0
push edx
add eax, eax
push eax
call fcn.0041cae0
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx]
add eax, esi
cmp esi, edx
jae 0x4188e7
nop
mov cl, byte [edi]
test cl, cl
je 0x4188e3
inc esi
mov byte [eax], cl
inc eax
mov dword [esp + 0x30], esi
inc edi
cmp esi, edx
jb 0x4188d0
mov dword [esp + 0x50], esi
inc dword [esp + 0x1c]
jmp 0x41a7d7
cmp byte [edx + 1], 0
lea eax, [edx + 1]
je 0x41a7ea
mov edi, dword [esp + 0x1c]
mov ecx, eax
mov edx, dword [esp + 0x24]
mov dword [esp + 0x2c], edi
or edi, 0xffffffff
mov byte [esp + 0x60], 0
mov byte [esp + 0x1a], 0
mov byte [esp + 0x23], 0
mov byte [esp + 0x5f], 0
mov byte [esp + 0x4b], 0
mov byte [esp + 0x1b], 0x20
mov dword [esp + 0x4c], 0xffffffff
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], 2
mov dword [esp + 0x1c], ecx
mov al, byte [ecx]
test al, al
je 0x41a77d
movsx ecx, al
lea eax, [ecx - 0x20]
cmp eax, 0x5a
ja case.0x418964.33
movzx eax, byte [eax + 0x41a8f8]
jmp dword [eax*4 + 0x41a888]
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x1a], 1
inc ecx
jmp 0x418940
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x23], 1
inc ecx
jmp 0x418940
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x60], 1
inc ecx
jmp 0x418940
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x1c]
cmp eax, 0xffffffff
jne 0x4189a4
mov byte [esp + 0x1b], 0x30
inc ecx
jmp 0x418940
lea eax, [eax + eax*4]
add eax, eax
inc ecx
mov dword [esp + 0x4c], eax
jmp 0x418940
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x5f], 1
inc ecx
jmp 0x418940
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
mov ecx, dword [eax - 4]
mov eax, dword [edx + 4]
sub eax, dword [edx]
mov dword [ecx], eax
mov ecx, dword [esp + 0x1c]
inc ecx
jmp 0x418940
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x40]
inc ecx
mov dword [esp + 0x1c], ecx
cmp eax, 1
jne 0x4189fa
mov dword [esp + 0x40], 0
jmp 0x418944
mov dword [esp + 0x40], 1
jmp 0x418944
mov eax, dword [esp + 0x40]
cmp eax, 3
jne case.0x418964.119
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x40], 4
inc ecx
jmp 0x418940
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x40], 3
inc ecx
jmp 0x418940
mov ecx, dword [esp + 0x1c]
inc ecx
jmp 0x418938
mov eax, dword [esp + 0x1c]
xor edi, edi
lea ecx, [eax + 1]
mov dword [esp + 0x44], edi
mov al, byte [ecx]
test al, al
je case.0x418a64.43
movsx eax, al
add eax, 0xffffffd6
cmp eax, 0xf
ja case.0x418a64.43
jmp dword [eax*4 + 0x41a954]
lea edi, [edi + edi*4]
mov eax, ecx
add edi, edi
mov dword [esp + 0x1c], eax
jmp 0x418a44
lea eax, [edi + edi*4]
lea edi, [eax*2 + 1]
mov eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x418a44
lea eax, [edi + edi*4]
lea edi, [eax*2 + 2]
mov eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x418a44
lea eax, [edi + edi*4]
lea edi, [eax*2 + 3]
mov eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x418a44
lea eax, [edi + edi*4]
lea edi, [eax*2 + 4]
mov eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x418a44
lea eax, [edi + edi*4]
lea edi, [eax*2 + 5]
mov eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x418a44
lea eax, [edi + edi*4]
lea edi, [eax*2 + 6]
mov eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x418a44
lea eax, [edi + edi*4]
lea edi, [eax*2 + 7]
mov eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x418a44
lea eax, [edi + edi*4]
lea edi, [eax*2 + 8]
mov eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x418a44
lea eax, [edi + edi*4]
lea edi, [eax*2 + 9]
mov eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x418a44
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
add eax, 4
mov dword [esp + 0x28], eax
add ecx, 2
mov edi, dword [eax - 4]
mov dword [esp + 0x44], edi
jmp 0x418940
mov eax, dword [esp + 0x28]
mov edx, 1
mov ecx, dword [esp + 0x60]
add eax, 4
mov dword [esp + 0x28], eax
movzx ecx, cl
mov eax, dword [eax - 4]
test eax, eax
cmovs ecx, edx
cdq
xor eax, edx
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1c]
sub eax, edx
mov edx, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x4c], eax
jmp 0x418940
mov eax, dword [esp + 0x4c]
cmp eax, 0xffffffff
mov dword [esp + 0x54], 0
cmove eax, dword [esp + 0x54]
lea eax, [eax + eax*4]
lea eax, [eax - 0x18]
lea eax, [ecx + eax*2]
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x1c]
inc ecx
jmp 0x418940
mov esi, dword [esp + 0x1c]
lea eax, [esp + 0x30]
push 1
push esi
push eax
push edx
call fcn.0041c730
add esp, 0x10
inc esi
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x30]
jmp 0x41a7d3
mov eax, dword [esp + 0x40]
cmp eax, 4
ja case.default.0x41929b
jmp dword [eax*4 + 0x41a994]
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
movsx eax, byte [eax - 4]
cdq
mov ecx, eax
jmp 0x418c2f
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
movsx eax, word [eax - 4]
cdq
mov ecx, eax
jmp 0x418c2f
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
mov eax, dword [eax - 4]
cdq
mov ecx, eax
jmp 0x418c2f
mov eax, dword [esp + 0x28]
add eax, 8
mov dword [esp + 0x28], eax
mov ecx, dword [eax - 8]
mov edx, dword [eax - 4]
mov dword [esp + 0x40], edx
xorps xmm0, xmm0
mov dword [esp + 0x44], ecx
lea eax, [esp + 0xd4]
movdqa xmmword [esp + 0xd4], xmm0
movq qword [esp + 0xe4], xmm0
mov byte [esp + 0xec], 0
mov dword [esp + 0x2c], eax
test ecx, ecx
jne 0x418ca6
test edx, edx
jne 0x418ca8
cmp dword [esp + 0x4c], ecx
jne 0x418c7b
cmp edi, 0xffffffff
jne 0x418c7b
inc dword [esp + 0x1c]
jmp 0x41a7d7
cmp byte [esp + 0x23], 0
je 0x418c95
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x20
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov byte [esp + 0xd4], 0x30
lea esi, [esp + 0xd5]
jmp 0x418d0b
test edx, edx
jg 0x418cc9
jl 0x418cb0
test ecx, ecx
jae 0x418cc9
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x2d
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov esi, dword [esp + 0x2c]
jmp 0x418d0b
cmp byte [esp + 0x1a], 0
je 0x418ce9
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x2b
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov esi, dword [esp + 0x2c]
jmp 0x418d0b
cmp byte [esp + 0x23], 0
je 0x418d09
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x20
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov esi, dword [esp + 0x2c]
jmp 0x418d0b
mov esi, eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
cdq
xor eax, edx
xor ecx, edx
sub ecx, edx
mov dword [esp + 0x44], ecx
sbb eax, edx
test ecx, ecx
jne 0x418d28
test eax, eax
je 0x418d5f
push 0
push 0xa
push eax
push ecx
call fcn.0043bfa0
mov cl, al
mov dword [esp + 0x2c], edx
shl cl, 2
lea edx, [ecx + eax]
mov ecx, dword [esp + 0x44]
add dl, dl
sub cl, dl
add cl, 0x30
mov byte [esi], cl
mov ecx, eax
mov eax, dword [esp + 0x2c]
inc esi
mov dword [esp + 0x44], ecx
test ecx, ecx
jne 0x418d28
test eax, eax
jne 0x418d28
cmp edi, 0xffffffff
je 0x418d96
mov eax, esi
lea ecx, [esp + 0xd4]
sub eax, ecx
cmp eax, edi
jae 0x418d96
sub edi, esi
lea edi, [esp + edi + 0xd4]
test edi, edi
je 0x418d96
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
dec edi
jne 0x418d80
lea eax, [esp + 0xd4]
cmp esi, eax
je 0x418db7
dec esi
lea ecx, [esp + 0x34]
push esi
call fcn.0041c380
lea eax, [esp + 0xd4]
cmp esi, eax
jne 0x418da1
cmp byte [esp + 0x60], 0
mov ecx, dword [esp + 0x34]
jne 0x418dfc
mov esi, dword [esp + 0x38]
mov eax, esi
mov edx, dword [esp + 0x4c]
sub eax, ecx
cmp edx, eax
jle 0x418dfc
mov edi, ecx
sub edi, esi
add edi, edx
je 0x418dfc
mov esi, dword [esp + 0x24]
mov edi, edi
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push esi
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x418de0
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
lea eax, [esp + 0x30]
mov edi, esi
sub edi, ecx
push edi
push ecx
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
cmp byte [esp + 0x60], 0
je 0x418e50
mov eax, dword [esp + 0x4c]
cmp eax, edi
jle 0x418e50
mov edi, dword [esp + 0x34]
sub edi, esi
mov byte [esp + 0x1b], 0x20
add edi, eax
je 0x418e50
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x418e35
mov esi, dword [esp + 0x34]
inc dword [esp + 0x1c]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x30]
jmp 0x41a7d3
mov eax, dword [esp + 0x40]
cmp eax, 4
ja case.default.0x41929b
jmp dword [eax*4 + 0x41a9a8]
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [eax - 4]
cdq
mov ecx, eax
jmp 0x418ec0
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, word [eax - 4]
cdq
mov ecx, eax
jmp 0x418ec0
mov eax, dword [esp + 0x28]
add eax, 4
xor edx, edx
mov ecx, dword [eax - 4]
jmp 0x418ebc
mov eax, dword [esp + 0x28]
add eax, 8
mov ecx, dword [eax - 8]
mov edx, dword [eax - 4]
mov dword [esp + 0x28], eax
mov dword [esp + 0x44], ecx
xorps xmm0, xmm0
movdqa xmmword [esp + 0x94], xmm0
lea eax, [esp + 0x94]
movq qword [esp + 0xa4], xmm0
mov byte [esp + 0xac], 0
test ecx, ecx
jne 0x418f15
test edx, edx
jne 0x418f15
cmp dword [esp + 0x4c], edx
jne 0x418f04
cmp edi, 0xffffffff
jne 0x418f04
inc dword [esp + 0x1c]
jmp 0x41a7d7
mov byte [esp + 0x94], 0x30
lea esi, [esp + 0x95]
jmp 0x418f4e
mov esi, eax
push 0
push 0xa
push edx
push ecx
call fcn.0043c050
mov cl, al
mov dword [esp + 0x2c], edx
shl cl, 2
lea edx, [ecx + eax]
mov ecx, dword [esp + 0x44]
add dl, dl
sub cl, dl
mov edx, dword [esp + 0x2c]
add cl, 0x30
mov byte [esi], cl
mov ecx, eax
inc esi
mov dword [esp + 0x44], ecx
test ecx, ecx
jne 0x418f17
test edx, edx
jne 0x418f17
cmp edi, 0xffffffff
je 0x418f86
mov eax, esi
lea ecx, [esp + 0x94]
sub eax, ecx
cmp eax, edi
jae 0x418f86
sub edi, esi
lea edi, [esp + edi + 0x94]
test edi, edi
je 0x418f86
nop
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
dec edi
jne 0x418f70
lea eax, [esp + 0x94]
cmp esi, eax
je 0x418fa7
dec esi
lea ecx, [esp + 0x34]
push esi
call fcn.0041c380
lea eax, [esp + 0x94]
cmp esi, eax
jne 0x418f91
cmp byte [esp + 0x60], 0
mov ecx, dword [esp + 0x34]
jne 0x418fef
mov esi, dword [esp + 0x38]
mov eax, esi
mov edx, dword [esp + 0x4c]
sub eax, ecx
cmp edx, eax
jle 0x418fef
mov edi, ecx
sub edi, esi
add edi, edx
je 0x418fef
lea ebx, [ebx]
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x418fd0
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
lea eax, [esp + 0x30]
mov edi, esi
sub edi, ecx
push edi
push ecx
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
cmp byte [esp + 0x60], 0
je 0x418e50
mov eax, dword [esp + 0x4c]
cmp eax, edi
jle 0x418e50
mov edi, dword [esp + 0x34]
sub edi, esi
mov byte [esp + 0x1b], 0x20
add edi, eax
je 0x418e50
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x419034
mov esi, dword [esp + 0x34]
inc dword [esp + 0x1c]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x30]
jmp 0x41a7d3
mov eax, dword [esp + 0x40]
cmp eax, 4
ja case.default.0x41929b
jmp dword [eax*4 + 0x41a9bc]
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [eax - 4]
cdq
jmp 0x4190bf
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, word [eax - 4]
cdq
jmp 0x4190bf
mov eax, dword [esp + 0x28]
add eax, 4
xor edx, edx
mov dword [esp + 0x28], eax
mov eax, dword [eax - 4]
jmp 0x4190bf
mov ecx, dword [esp + 0x28]
add ecx, 8
mov dword [esp + 0x28], ecx
mov eax, dword [ecx - 8]
mov edx, dword [ecx - 4]
mov dword [esp + 0x44], edx
mov dword [esp + 0x2c], eax
test eax, eax
jne 0x4190f6
test edx, edx
jne 0x4190f6
cmp dword [esp + 0x4c], eax
jne 0x4190e3
cmp edi, 0xffffffff
jne 0x4190e3
inc dword [esp + 0x1c]
jmp 0x41a7d7
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
cmp byte [esp + 0x5f], 0
je 0x419110
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov edx, dword [esp + 0x2c]
lea esi, [esp + 0x114]
mov ecx, dword [esp + 0x44]
xorps xmm0, xmm0
movdqa xmmword [esp + 0x114], xmm0
movq qword [esp + 0x124], xmm0
mov byte [esp + 0x12c], 0
test edx, edx
jne 0x419144
test ecx, ecx
je 0x41915c
mov al, dl
and al, 7
add al, 0x30
shrd edx, ecx, 3
mov byte [esi], al
inc esi
shr ecx, 3
test edx, edx
jne 0x419144
test ecx, ecx
jne 0x419144
cmp edi, 0xffffffff
je 0x419196
mov eax, esi
lea ecx, [esp + 0x114]
sub eax, ecx
cmp eax, edi
jae 0x419196
sub edi, esi
lea edi, [esp + edi + 0x114]
test edi, edi
je 0x419196
lea ecx, [ecx]
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
dec edi
jne 0x419180
lea eax, [esp + 0x114]
cmp esi, eax
je 0x4191b7
dec esi
lea ecx, [esp + 0x34]
push esi
call fcn.0041c380
lea eax, [esp + 0x114]
cmp esi, eax
jne 0x4191a1
cmp byte [esp + 0x60], 0
mov ecx, dword [esp + 0x34]
jne 0x4191ff
mov esi, dword [esp + 0x38]
mov eax, esi
mov edx, dword [esp + 0x4c]
sub eax, ecx
cmp edx, eax
jle 0x4191ff
mov edi, ecx
sub edi, esi
add edi, edx
je 0x4191ff
lea ebx, [ebx]
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x4191e0
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
lea eax, [esp + 0x30]
mov edi, esi
sub edi, ecx
push edi
push ecx
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
cmp byte [esp + 0x60], 0
je 0x418e50
mov eax, dword [esp + 0x4c]
cmp eax, edi
jle 0x418e50
mov edi, dword [esp + 0x34]
sub edi, esi
mov byte [esp + 0x1b], 0x20
add edi, eax
je 0x418e50
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x419244
mov esi, dword [esp + 0x34]
inc dword [esp + 0x1c]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x30]
jmp 0x41a7d3
mov eax, 3
mov byte [esp + 0x4b], 1
lea edi, [eax + 5]
jmp 0x419292
mov eax, dword [esp + 0x40]
mov byte [esp + 0x4b], 1
jmp 0x419292
mov eax, dword [esp + 0x40]
cmp eax, 4
ja case.default.0x41929b
jmp dword [eax*4 + 0x41a9d0]
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [eax - 4]
cdq
mov ecx, eax
jmp 0x4192e9
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, word [eax - 4]
cdq
mov ecx, eax
jmp 0x4192e9
mov eax, dword [esp + 0x28]
add eax, 4
xor edx, edx
mov ecx, dword [eax - 4]
jmp 0x4192e5
mov eax, dword [esp + 0x28]
add eax, 8
mov ecx, dword [eax - 8]
mov edx, dword [eax - 4]
mov dword [esp + 0x28], eax
mov dword [esp + 0x40], edx
xorps xmm0, xmm0
mov dword [esp + 0x44], ecx
lea esi, [esp + 0xf4]
movdqa xmmword [esp + 0xf4], xmm0
movq qword [esp + 0x104], xmm0
mov byte [esp + 0x10c], 0
test ecx, ecx
jne 0x419344
test edx, edx
jne 0x419344
cmp dword [esp + 0x4c], ecx
jne 0x419335
cmp edi, 0xffffffff
jne 0x419335
inc dword [esp + 0x1c]
mov esi, dword [esp + 0x50]
jmp 0x41a7d7
mov byte [esp + 0xf4], 0x30
lea esi, [esp + 0xf5]
cmp byte [esp + 0x5f], 0
je 0x419381
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
cmp byte [esp + 0x4b], 0
lea eax, [esp + 0x1a]
lea ecx, [esp + 0x34]
mov byte [esp + 0x1a], 0x58
push eax
jne 0x419378
mov byte [esp + 0x1e], 0x78
call fcn.0041c280
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
test ecx, ecx
jne 0x419391
test edx, edx
je 0x41948a
mov eax, ecx
and eax, 0xf
cmp byte [esp + 0x4b], 0
je 0x41942f
mov dword [esp + 0x54], 0
cmp dword [esp + 0x54], 0
ja case.default.0x41944a
jb 0x4193bf
cmp eax, 0xf
ja case.default.0x41944a
cmp eax, 0xf
ja case.default.0x41944a
jmp dword [eax*4 + 0x41a9e4]
mov byte [esi], 0x30
jmp 0x419472
mov byte [esi], 0x32
jmp 0x419472
mov byte [esi], 0x33
jmp 0x419472
mov byte [esi], 0x34
jmp 0x419472
mov byte [esi], 0x35
jmp 0x419472
mov byte [esi], 0x36
jmp 0x419472
mov byte [esi], 0x37
jmp 0x419472
mov byte [esi], 0x38
jmp 0x419472
mov byte [esi], 0x39
jmp 0x419472
mov byte [esi], 0x41
jmp 0x419472
mov byte [esi], 0x42
jmp 0x419472
mov byte [esi], 0x43
jmp 0x419472
mov byte [esi], 0x44
jmp 0x419472
mov byte [esi], 0x45
jmp 0x419472
mov byte [esi], 0x46
jmp 0x419472
mov dword [esp + 0x54], 0
cmp dword [esp + 0x54], 0
ja case.default.0x41944a
jb 0x419445
cmp eax, 0xf
ja case.default.0x41944a
cmp eax, 0xf
ja case.default.0x41944a
jmp dword [eax*4 + 0x41aa24]
mov byte [esi], 0x31
jmp 0x419472
mov byte [esi], 0x61
jmp 0x419472
mov byte [esi], 0x62
jmp 0x419472
mov byte [esi], 0x63
jmp 0x419472
mov byte [esi], 0x64
jmp 0x419472
mov byte [esi], 0x65
jmp 0x419472
mov byte [esi], 0x66
inc esi
shrd ecx, edx, 4
shr edx, 4
test ecx, ecx
jne 0x419391
test edx, edx
jne 0x419391
cmp edi, 0xffffffff
je 0x4194c6
mov eax, esi
lea ecx, [esp + 0xf4]
sub eax, ecx
cmp eax, edi
jae 0x4194c6
sub edi, esi
lea edi, [esp + edi + 0xf4]
test edi, edi
je 0x4194c6
jmp 0x4194b0
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
dec edi
jne 0x4194b0
lea eax, [esp + 0xf4]
cmp esi, eax
je 0x4194e7
dec esi
lea ecx, [esp + 0x34]
push esi
call fcn.0041c380
lea eax, [esp + 0xf4]
cmp esi, eax
jne 0x4194d1
cmp byte [esp + 0x60], 0
mov ecx, dword [esp + 0x34]
jne 0x41952f
mov esi, dword [esp + 0x38]
mov eax, esi
mov edx, dword [esp + 0x4c]
sub eax, ecx
cmp edx, eax
jle 0x41952f
mov edi, ecx
sub edi, esi
add edi, edx
je 0x41952f
lea ebx, [ebx]
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x419510
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
lea eax, [esp + 0x30]
mov edi, esi
sub edi, ecx
push edi
push ecx
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
cmp byte [esp + 0x60], 0
je 0x418e50
mov eax, dword [esp + 0x4c]
cmp eax, edi
jle 0x418e50
mov edi, dword [esp + 0x34]
sub edi, esi
mov byte [esp + 0x1b], 0x20
add edi, eax
je 0x418e50
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x419574
mov esi, dword [esp + 0x34]
inc dword [esp + 0x1c]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x30]
jmp 0x41a7d3
mov byte [esp + 0x4b], 1
mov eax, dword [esp + 0x28]
sub esp, 8
add eax, 8
mov dword [esp + 0x30], eax
movsd xmm0, qword [eax - 8]
movsd qword [esp + 0x6c], xmm0
movsd qword [esp], xmm0
call dword [sym.imp.MSVCR120.dll__finite]
add esp, 8
test eax, eax
jne 0x419612
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x69
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x6e
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x66
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
jmp 0x419de6
movsd xmm0, qword [esp + 0x64]
sub esp, 8
movsd qword [esp], xmm0
call dword [sym.imp.MSVCR120.dll__isnan]
add esp, 8
test eax, eax
je 0x41966b
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x4e
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x61
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x4e
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
jmp 0x419de6
mov eax, dword [esp + 0x1c]
movsd xmm1, qword [esp + 0x64]
movapd xmm0, xmm1
andpd xmm0, xmmword [0x554010]
movsx eax, byte [eax]
mov dword [esp + 0x40], eax
add eax, 0xffffffbf
movsd qword [esp + 0x6c], xmm0
movsd qword [esp + 0x54], xmm0
cmp eax, 0x26
ja case.0x4196a7.66
movzx eax, byte [eax + 0x41aa7c]
jmp dword [eax*4 + 0x41aa64]
xorps xmm2, xmm2
ucomisd xmm2, xmm0
lahf
test ah, 0x44
jnp 0x41970f
movsd xmm2, qword [0x553fb8]
comisd xmm2, xmm0
ja case.0x4196a7.69
comisd xmm0, xmmword [0x553fe8]
ja case.0x4196a7.69
comisd xmm0, xmmword [0x553fd8]
jbe 0x41970f
call sub.MSVCR120.dll__libm_sse2_log10_precise
movd xmm1, edi
mov eax, edi
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x554000]
comisd xmm0, xmm1
movsd xmm1, qword [esp + 0x64]
jbe 0x41970f
mov esi, 0x65
mov dword [esp + 0x40], esi
jmp 0x419745
mov esi, 0x66
mov dword [esp + 0x40], esi
jmp 0x419745
mov dword [esp + 0x40], 0x66
mov esi, dword [esp + 0x40]
cmp edi, 0xffffffff
jne 0x419745
mov edi, 6
mov dword [esp + 0x44], edi
jmp 0x419745
mov esi, 0x61
mov dword [esp + 0x40], esi
jmp 0x419745
mov esi, dword [esp + 0x40]
xorps xmm2, xmm2
ucomisd xmm2, xmm1
lahf
test ah, 0x44
jnp 0x41976d
comisd xmm2, xmm1
jbe 0x41975f
mov byte [esp + 0x1a], 0x2d
jmp 0x419779
cmp byte [esp + 0x1a], 0
je 0x41976d
mov byte [esp + 0x1a], 0x2b
jmp 0x419779
cmp byte [esp + 0x23], 0
je 0x41978a
mov byte [esp + 0x1a], 0x20
lea eax, [esp + 0x1a]
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
xorps xmm2, xmm2
xor ecx, ecx
mov eax, esi
mov dword [esp + 0x50], ecx
sub eax, 0x61
je 0x419de6
sub eax, 4
je 0x4197b2
dec eax
jne case.default.0x41929b
movsd xmm0, qword [esp + 0x6c]
jmp 0x41981f
movsd xmm0, qword [esp + 0x6c]
movsd xmm1, qword [0x553fd8]
ucomisd xmm2, xmm0
lahf
test ah, 0x44
jnp 0x4197fe
movsd xmm2, qword [0x553fc8]
comisd xmm2, xmm0
jbe 0x4197fb
jmp 0x4197e0
mulsd xmm0, xmm1
dec ecx
comisd xmm2, xmm0
movsd qword [esp + 0x54], xmm0
ja 0x4197e0
mov dword [esp + 0x50], ecx
movsd qword [esp + 0x6c], xmm0
xorps xmm2, xmm2
comisd xmm0, xmm1
jbe 0x41981f
divsd xmm0, xmm1
inc ecx
comisd xmm0, xmm1
movsd qword [esp + 0x54], xmm0
ja 0x419804
mov dword [esp + 0x50], ecx
movsd qword [esp + 0x6c], xmm0
ucomisd xmm2, xmm0
lahf
test ah, 0x44
jp 0x41982f
movapd xmm1, xmm2
jmp 0x419850
push 0
call sub.MSVCR120.dll__libm_sse2_log10_precise
sub esp, 8
movsd qword [esp], xmm0
call fcn.00414810
fstp qword [esp + 0x70]
movsd xmm1, qword [esp + 0x70]
add esp, 0xc
movsd xmm0, qword [0x553fd8]
movsd qword [esp + 0x64], xmm1
call sub.MSVCR120.dll__libm_sse2_pow_precise
movsd xmm1, qword [esp + 0x6c]
ucomisd xmm1, xmm0
movsd xmm1, qword [esp + 0x64]
lahf
test ah, 0x44
jp 0x419887
addsd xmm1, qword [0x553fc8]
movsd qword [esp + 0x64], xmm1
mov byte [esp + 0x1a], 0
mov edx, edi
mov dword [esp + 0x2c], edx
cmp edi, 0xffffffff
jne 0x4198d3
movsd xmm0, qword [0x553fd0]
comisd xmm1, xmm0
jb 0x4198ad
xor edx, edx
mov dword [esp + 0x2c], edx
jmp 0x4198bc
subsd xmm0, xmm1
call fcn.0043bda1
mov edx, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x1c]
mov cl, byte [eax]
cmp cl, 0x67
je 0x4198cc
cmp cl, 0x47
jne 0x419915
mov byte [esp + 0x1a], 1
jmp 0x419915
mov eax, dword [esp + 0x1c]
mov al, byte [eax]
cmp al, 0x67
je 0x4198e1
cmp al, 0x47
jne 0x419915
movd xmm0, edi
mov eax, edi
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
mov byte [esp + 0x1a], 1
addsd xmm0, qword [eax*8 + 0x554000]
comisd xmm1, xmm0
jb 0x419906
xor edx, edx
jmp 0x419911
subsd xmm0, xmm1
call fcn.0043bda1
mov edx, eax
mov dword [esp + 0x2c], edx
movsd xmm1, qword [esp + 0x64]
movsd xmm0, qword [0x553fd0]
comisd xmm0, xmm1
mov esi, dword [esp + 0x54]
jbe 0x41995f
mov eax, esi
mov ecx, 0
and eax, 0xf
jne 0x41993d
test ecx, ecx
je 0x41995f
cmp eax, 0xf
jne 0x419946
test ecx, ecx
je 0x41995f
add esi, 1
mov dword [esp + 0x54], esi
adc dword [esp + 0x58], ecx
movsd xmm0, qword [esp + 0x54]
movsd qword [esp + 0x6c], xmm0
jmp 0x419965
movsd xmm0, qword [esp + 0x6c]
movsd xmm2, qword [0x553fe0]
comisd xmm2, xmm1
jbe 0x41999c
mov eax, edx
neg eax
push eax
sub esp, 8
movsd qword [esp], xmm0
call fcn.00414890
fstp qword [esp + 0x60]
movsd xmm0, qword [esp + 0x60]
add esp, 0xc
mov esi, dword [esp + 0x54]
movsd qword [esp + 0x6c], xmm0
xorps xmm2, xmm2
ucomisd xmm2, xmm0
lahf
test ah, 0x44
jp 0x4199b5
movapd xmm1, xmm2
movsd qword [esp + 0x64], xmm1
jmp 0x4199d6
push 0
call sub.MSVCR120.dll__libm_sse2_log10_precise
sub esp, 8
movsd qword [esp], xmm0
call fcn.00414810
fstp qword [esp + 0x70]
movsd xmm1, qword [esp + 0x70]
add esp, 0xc
movsd xmm0, qword [0x553fd8]
movsd qword [esp + 0x74], xmm1
call sub.MSVCR120.dll__libm_sse2_pow_precise
movsd xmm1, qword [esp + 0x6c]
movsd xmm3, qword [esp + 0x74]
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jp 0x419a13
addsd xmm3, qword [0x553fc8]
movsd qword [esp + 0x74], xmm3
movsd qword [esp + 0x64], xmm3
movsd xmm0, qword [0x553fd0]
comisd xmm0, xmm3
jbe 0x419a61
mov edx, dword [esp + 0x58]
mov ecx, esi
call fcn.0043bece
movsd xmm3, qword [esp + 0x74]
xorps xmm5, xmm5
ucomisd xmm5, xmm0
lahf
test ah, 0x44
jnp 0x419a59
add esi, 1
mov dword [esp + 0x54], esi
adc dword [esp + 0x58], 0
movsd xmm1, qword [esp + 0x54]
movsd qword [esp + 0x6c], xmm1
jmp 0x419a64
movsd xmm1, qword [esp + 0x6c]
jmp 0x419a64
xorps xmm5, xmm5
movsd xmm4, qword [0x553fc8]
comisd xmm4, xmm1
jbe 0x419a8a
lea eax, [esp + 0x23]
mov byte [esp + 0x23], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
jmp 0x419bff
movsd xmm6, qword [0x553fe0]
lea eax, [esp + 0x7c]
xor esi, esi
movsd qword [esp + 0x7c], xmm6
comisd xmm3, xmm6
lea ecx, [esp + 0x64]
movapd xmm2, xmm5
movsd qword [esp + 0x84], xmm2
cmovbe eax, ecx
mov dword [esp + 0x54], eax
movsd xmm0, qword [eax]
comisd xmm0, xmm5
jbe 0x419b96
movaps xmm1, xmm3
movsd qword [esp + 0x7c], xmm6
subsd xmm1, xmm4
movaps xmm3, xmm5
mov edi, eax
movsd qword [esp + 0x8c], xmm1
movsd xmm0, qword [0x553fd8]
subsd xmm1, xmm3
call sub.MSVCR120.dll__libm_sse2_pow_precise
movsd xmm1, qword [esp + 0x6c]
lea ecx, [esp + 0x34]
subsd xmm1, qword [esp + 0x84]
movsd qword [esp + 0x54], xmm0
divsd xmm1, xmm0
cvttsd2si eax, xmm1
test eax, eax
jns 0x419b20
mov byte [esp + 0x23], 0x30
jmp 0x419b26
add al, 0x30
mov byte [esp + 0x23], al
lea eax, [esp + 0x23]
push eax
call fcn.0041c280
movsd xmm0, qword [esp + 0x6c]
divsd xmm0, qword [esp + 0x54]
call fcn.0043bdb0
mov ecx, eax
call fcn.0043bece
movsd xmm1, qword [esp + 0x8c]
inc esi
movapd xmm2, xmm0
movsd xmm0, qword [edi]
mulsd xmm2, qword [esp + 0x54]
movd xmm3, esi
cvtdq2pd xmm3, xmm3
movsd qword [esp + 0x84], xmm2
comisd xmm0, xmm3
ja 0x419ae3
mov edi, dword [esp + 0x44]
xorps xmm5, xmm5
movsd xmm1, qword [esp + 0x6c]
movsd xmm3, qword [esp + 0x74]
movsd xmm6, qword [0x553fe0]
comisd xmm6, xmm3
jbe 0x419ba8
subsd xmm1, xmm2
movsd qword [esp + 0x6c], xmm1
jmp 0x419bff
subsd xmm3, xmm6
xor esi, esi
comisd xmm3, xmm5
movsd qword [esp + 0x74], xmm3
jbe 0x419bf9
lea ebx, [ebx]
lea eax, [esp + 0x23]
mov byte [esp + 0x23], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
movsd xmm1, qword [esp + 0x74]
inc esi
mov eax, esi
shr eax, 0x1f
movd xmm0, esi
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [eax*8 + 0x554000]
comisd xmm1, xmm0
ja 0x419bc0
xorps xmm5, xmm5
movsd qword [esp + 0x6c], xmm5
test edi, edi
jne 0x419c0a
cmp byte [esp + 0x5f], 0
je 0x419c1d
lea eax, [esp + 0x23]
mov byte [esp + 0x23], 0x2e
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov esi, dword [esp + 0x2c]
test esi, esi
je 0x419c7e
movsd xmm1, qword [esp + 0x6c]
jmp 0x419c30
mulsd xmm1, qword [0x553fd8]
mov ecx, 0xa
cvttsd2si eax, xmm1
movsd qword [esp + 0x6c], xmm1
cdq
idiv ecx
lea eax, [esp + 0x23]
add dl, 0x30
lea ecx, [esp + 0x34]
push eax
mov byte [esp + 0x27], dl
call fcn.0041c280
movsd xmm0, qword [esp + 0x6c]
call fcn.0043bdb0
mov ecx, eax
call fcn.0043bece
movsd xmm1, qword [esp + 0x6c]
subsd xmm1, xmm0
dec esi
jne 0x419c30
cmp byte [esp + 0x1a], 0
je 0x419ca9
mov ecx, dword [esp + 0x34]
lea esp, [esp]
mov esi, dword [esp + 0x38]
mov eax, esi
sub eax, ecx
cmp eax, 2
jbe 0x419ca9
dec esi
cmp byte [esi], 0x30
jne 0x419ca9
mov dword [esp + 0x38], esi
jmp 0x419c90
cmp byte [esp + 0x5f], 0
jne 0x419cc2
mov esi, dword [esp + 0x38]
cmp byte [esi - 1], 0x2e
lea eax, [esi - 1]
cmove esi, eax
mov dword [esp + 0x38], esi
cmp dword [esp + 0x40], 0x65
jne 0x419de6
cmp byte [esp + 0x4b], 0
lea eax, [esp + 0x1a]
lea ecx, [esp + 0x34]
mov byte [esp + 0x1a], 0x45
push eax
jne 0x419ce7
mov byte [esp + 0x1e], 0x65
call fcn.0041c280
mov esi, dword [esp + 0x50]
lea eax, [esp + 0x1a]
lea ecx, [esp + 0x34]
push eax
test esi, esi
jns 0x419d16
mov byte [esp + 0x1e], 0x2d
call fcn.0041c280
mov eax, esi
cdq
mov esi, eax
xor esi, edx
sub esi, edx
mov dword [esp + 0x50], esi
jmp 0x419d20
mov byte [esp + 0x1e], 0x2b
call fcn.0041c280
cmp esi, 0x64
jge 0x419d38
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
cmp esi, 0xa
jge 0x419d50
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
test esi, esi
jne 0x419d6c
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
jmp 0x419de6
xorps xmm0, xmm0
mov byte [esp + 0x14c], 0
movdqa xmmword [esp + 0x134], xmm0
lea edi, [esp + 0x134]
movq qword [esp + 0x144], xmm0
mov eax, 0x66666667
imul esi
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov al, cl
mov dword [esp + 0x54], ecx
mov esi, ecx
shl al, 2
add cl, al
mov eax, dword [esp + 0x50]
add cl, cl
mov dword [esp + 0x50], esi
sub al, cl
add al, 0x30
mov byte [edi], al
inc edi
test esi, esi
jne 0x419d90
lea eax, [esp + 0x134]
cmp edi, eax
je 0x419de6
mov edi, edi
dec edi
lea ecx, [esp + 0x34]
push edi
call fcn.0041c380
lea eax, [esp + 0x134]
cmp edi, eax
jne 0x419dd0
cmp byte [esp + 0x60], 0
mov ecx, dword [esp + 0x34]
jne 0x419e2f
mov esi, dword [esp + 0x38]
mov eax, esi
mov edx, dword [esp + 0x4c]
sub eax, ecx
cmp edx, eax
jle 0x419e2f
mov edi, ecx
sub edi, esi
add edi, edx
je 0x419e2f
lea esp, [esp]
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x419e10
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
lea eax, [esp + 0x30]
mov edi, esi
sub edi, ecx
push edi
push ecx
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
cmp byte [esp + 0x60], 0
je 0x419ef5
mov eax, dword [esp + 0x4c]
cmp eax, edi
jle 0x419ef5
mov ecx, dword [esp + 0x34]
sub ecx, esi
mov byte [esp + 0x1b], 0x20
add ecx, eax
mov dword [esp + 0x2c], ecx
je 0x419ef5
mov esi, dword [esp + 0x30]
mov dword [esp + 0x50], esi
mov edx, dword [esp + 0x24]
lea edi, [esp + 0x1b]
mov eax, dword [edx + 4]
sub eax, dword [edx]
lea edx, [esi + 1]
mov dword [esp + 0x54], edx
cmp edx, eax
jb 0x419eb6
lea ecx, [esp + 0x1a]
mov byte [esp + 0x1a], 0
push ecx
mov ecx, dword [esp + 0x28]
add eax, eax
push eax
call fcn.0041cae0
mov edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
add eax, esi
cmp esi, edx
jae 0x419edd
mov cl, byte [edi]
test cl, cl
je 0x419ed5
inc esi
mov byte [eax], cl
inc eax
mov dword [esp + 0x30], esi
inc edi
cmp esi, edx
jb 0x419ec2
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x50], esi
dec ecx
mov dword [esp + 0x2c], ecx
jne 0x419e80
mov eax, dword [esp + 0x34]
inc dword [esp + 0x1c]
mov dword [esp + 0x38], eax
jmp 0x41a7d7
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
inc dword [esp + 0x1c]
mov dword [esp + 0x50], esi
mov dword [esp + 0x38], eax
jmp 0x41a7d7
mov byte [esp + 0x4b], 1
mov eax, dword [esp + 0x28]
sub esp, 8
add eax, 8
mov dword [esp + 0x30], eax
movsd xmm0, qword [eax - 8]
movsd qword [esp + 0x6c], xmm0
movsd qword [esp + 0x7c], xmm0
movsd qword [esp], xmm0
call dword [sym.imp.MSVCR120.dll__finite]
add esp, 8
test eax, eax
jne 0x41a040
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x69
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x6e
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov byte [esp + 0x1a], 0x66
lea eax, [esp + 0x1a]
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov esi, dword [esp + 0x38]
cmp byte [esp + 0x60], 0
mov ecx, dword [esp + 0x34]
jne 0x419fc8
mov edx, dword [esp + 0x4c]
mov eax, esi
sub eax, ecx
cmp edx, eax
jle 0x419fc8
mov edi, ecx
sub edi, esi
add edi, edx
je 0x419fc8
mov esi, dword [esp + 0x24]
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push esi
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x419fa8
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
mov edi, esi
lea eax, [esp + 0x30]
sub edi, ecx
push edi
push ecx
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
cmp byte [esp + 0x60], 0
je 0x418e50
mov eax, dword [esp + 0x4c]
cmp eax, edi
jle 0x418e50
mov edi, dword [esp + 0x34]
sub edi, esi
mov byte [esp + 0x1b], 0x20
add edi, eax
je 0x418e50
lea esp, [esp]
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x41a010
mov esi, dword [esp + 0x34]
inc dword [esp + 0x1c]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x30]
jmp 0x41a7d3
movsd xmm0, qword [esp + 0x64]
sub esp, 8
movsd qword [esp], xmm0
call dword [sym.imp.MSVCR120.dll__isnan]
add esp, 8
test eax, eax
je 0x41a08b
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x4e
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x61
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov byte [esp + 0x1a], 0x4e
jmp 0x419f73
movsd xmm0, qword [esp + 0x64]
cmp edi, 0xffffffff
mov eax, 6
xorps xmm1, xmm1
cmove edi, eax
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jnp 0x41a0c4
comisd xmm1, xmm0
jbe 0x41a0b6
mov byte [esp + 0x1a], 0x2d
jmp 0x41a0d0
cmp byte [esp + 0x1a], 0
je 0x41a0c4
mov byte [esp + 0x1a], 0x2b
jmp 0x41a0d0
cmp byte [esp + 0x23], 0
je 0x41a0de
mov byte [esp + 0x1a], 0x20
lea eax, [esp + 0x1a]
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
cmp byte [esp + 0x4b], 0
lea eax, [esp + 0x1a]
lea ecx, [esp + 0x34]
mov byte [esp + 0x1a], 0x58
push eax
jne 0x41a10b
mov byte [esp + 0x1e], 0x78
call fcn.0041c280
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x31
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x2e
push eax
lea ecx, [esp + 0x38]
call fcn.0041c280
mov ecx, dword [esp + 0x78]
lea esi, [esp + 0xb4]
mov edx, dword [esp + 0x74]
xorps xmm0, xmm0
mov dword [esp + 0x2c], ecx
and ecx, 0xfffff
movdqa xmmword [esp + 0xb4], xmm0
movq qword [esp + 0xc4], xmm0
mov byte [esp + 0xcc], 0
test edx, edx
jne 0x41a180
test ecx, ecx
je 0x41a273
jmp 0x41a180
mov eax, edx
and eax, 0xf
cmp byte [esp + 0x4b], 0
je 0x41a218
mov dword [esp + 0x54], 0
cmp dword [esp + 0x54], 0
ja case.default.0x41a233
jb 0x41a1ae
cmp eax, 0xf
ja case.default.0x41a233
cmp eax, 0xf
ja case.default.0x41a233
jmp dword [eax*4 + 0x41aaa4]
mov byte [esi], 0x30
jmp 0x41a25b
mov byte [esi], 0x32
jmp 0x41a25b
mov byte [esi], 0x33
jmp 0x41a25b
mov byte [esi], 0x34
jmp 0x41a25b
mov byte [esi], 0x35
jmp 0x41a25b
mov byte [esi], 0x36
jmp 0x41a25b
mov byte [esi], 0x37
jmp 0x41a25b
mov byte [esi], 0x38
jmp 0x41a25b
mov byte [esi], 0x39
jmp 0x41a25b
mov byte [esi], 0x41
jmp 0x41a25b
mov byte [esi], 0x42
jmp 0x41a25b
mov byte [esi], 0x43
jmp 0x41a25b
mov byte [esi], 0x44
jmp 0x41a25b
mov byte [esi], 0x45
jmp 0x41a25b
mov byte [esi], 0x46
jmp 0x41a25b
mov dword [esp + 0x54], 0
cmp dword [esp + 0x54], 0
ja case.default.0x41a233
jb 0x41a22e
cmp eax, 0xf
ja case.default.0x41a233
cmp eax, 0xf
ja case.default.0x41a233
jmp dword [eax*4 + 0x41aae4]
mov byte [esi], 0x31
jmp 0x41a25b
mov byte [esi], 0x61
jmp 0x41a25b
mov byte [esi], 0x62
jmp 0x41a25b
mov byte [esi], 0x63
jmp 0x41a25b
mov byte [esi], 0x64
jmp 0x41a25b
mov byte [esi], 0x65
jmp 0x41a25b
mov byte [esi], 0x66
inc esi
shrd edx, ecx, 4
shr ecx, 4
test edx, edx
jne 0x41a180
test ecx, ecx
jne 0x41a180
test edi, edi
je 0x41a2aa
jmp 0x41a280
lea eax, [esp + 0xb4]
lea ecx, [esp + 0x34]
cmp esi, eax
je 0x41a298
dec esi
push esi
call fcn.0041c380
jmp 0x41a2a7
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0x30
push eax
call fcn.0041c280
dec edi
jne 0x41a280
mov eax, dword [esp + 0x2c]
lea edi, [esp + 0xb4]
shr eax, 0x14
lea ecx, [esp + 0x34]
and eax, 0x7ff
mov byte [esp + 0x1a], 0x50
cdq
mov esi, eax
lea eax, [esp + 0x1a]
xor esi, edx
sub esi, edx
sub esi, 0x3ff
cmp byte [esp + 0x4b], 0
mov dword [esp + 0x2c], esi
push eax
jne 0x41a2e8
mov byte [esp + 0x1e], 0x70
call fcn.0041c280
lea eax, [esp + 0x1a]
lea ecx, [esp + 0x34]
push eax
test esi, esi
jns 0x41a313
mov byte [esp + 0x1e], 0x2d
call fcn.0041c280
mov eax, esi
cdq
mov esi, eax
xor esi, edx
sub esi, edx
mov dword [esp + 0x2c], esi
jmp 0x41a31d
mov byte [esp + 0x1e], 0x2b
call fcn.0041c280
test esi, esi
jne 0x41a332
mov byte [esp + 0xb4], 0x30
lea edi, [esp + 0xb5]
jmp 0x41a374
mov eax, 0x66666667
imul esi
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov al, cl
mov dword [esp + 0x54], ecx
mov esi, ecx
shl al, 2
add cl, al
mov eax, dword [esp + 0x2c]
add cl, cl
mov dword [esp + 0x2c], esi
sub al, cl
add al, 0x30
mov byte [edi], al
inc edi
test esi, esi
jne 0x41a332
lea eax, [esp + 0xb4]
cmp edi, eax
je 0x419f81
mov esi, dword [esp + 0x38]
dec edi
cmp edi, esi
jae 0x41a3cd
mov ecx, dword [esp + 0x34]
cmp ecx, edi
ja 0x41a3cd
mov eax, edi
sub eax, ecx
mov dword [esp + 0x54], eax
cmp esi, dword [esp + 0x3c]
jne 0x41a3aa
push 1
lea ecx, [esp + 0x38]
call fcn.0041c5b0
mov esi, dword [esp + 0x38]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x54], esi
mov dword [esp + 0x2c], esi
mov byte [esp + 0x170], 1
test esi, esi
je 0x41a3c3
mov al, byte [eax + ecx]
mov byte [esi], al
mov byte [esp + 0x170], 0
jmp 0x41a3ea
cmp esi, dword [esp + 0x3c]
jne 0x41a3e2
push 1
lea ecx, [esp + 0x38]
call fcn.0041c5b0
mov esi, dword [esp + 0x38]
test esi, esi
je 0x41a3ea
mov al, byte [edi]
mov byte [esi], al
inc esi
lea eax, [esp + 0xb4]
mov dword [esp + 0x38], esi
cmp edi, eax
jne 0x41a378
jmp 0x419f85
cmp byte [esp + 0x60], 0
mov esi, dword [esp + 0x4c]
jne 0x41a436
cmp esi, 1
jle 0x41a436
dec esi
je 0x41a432
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push edx
call fcn.0041c730
mov edx, dword [esp + 0x34]
add esp, 0x10
dec esi
jne 0x41a416
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x28], eax
push 1
mov al, byte [eax - 4]
mov byte [esp + 0x1e], al
lea eax, [esp + 0x1e]
push eax
lea eax, [esp + 0x38]
push eax
push edi
call fcn.0041c730
add esp, 0x10
cmp byte [esp + 0x60], 0
je 0x41a48d
cmp esi, 1
jle 0x41a48d
mov byte [esp + 0x1b], 0x20
dec esi
je 0x41a48d
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push edi
call fcn.0041c730
add esp, 0x10
dec esi
jne 0x41a475
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
inc dword [esp + 0x1c]
mov dword [esp + 0x38], edx
mov dword [esp + 0x50], esi
jmp 0x41a7db
mov eax, dword [esp + 0x28]
add eax, 4
cmp dword [esp + 0x40], 3
mov dword [esp + 0x28], eax
je 0x41a5d8
cmp byte [esp + 0x60], 0
mov edx, dword [eax - 4]
mov dword [esp + 0x2c], edx
mov dword [esp + 0x40], edx
jne 0x41a52d
mov eax, dword [esp + 0x4c]
test eax, eax
jle 0x41a52d
xor ecx, ecx
test edx, edx
je 0x41a4f4
mov ecx, edx
lea eax, [ecx + 1]
mov dword [esp + 0x54], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41a4e5
sub ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x4c]
cmp eax, ecx
jle 0x41a52d
sub eax, ecx
mov dword [esp + 0x54], eax
je 0x41a52d
mov edi, eax
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x41a502
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x50], esi
test edx, edx
je 0x41a56f
mov al, byte [edx]
test al, al
je 0x41a56f
test edi, edi
je 0x41a567
mov byte [esp + 0x1a], al
lea eax, [esp + 0x1a]
push 1
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
mov edx, dword [esp + 0x3c]
add esp, 0x10
inc edx
dec edi
mov dword [esp + 0x2c], edx
mov al, byte [edx]
test al, al
jne 0x41a537
mov esi, dword [esp + 0x30]
mov dword [esp + 0x50], esi
cmp byte [esp + 0x60], 0
je 0x41a701
mov eax, dword [esp + 0x4c]
test eax, eax
jle 0x41a701
sub edx, dword [esp + 0x40]
mov edi, dword [esp + 0x24]
cmp eax, edx
jle 0x41a705
sub eax, edx
mov byte [esp + 0x1b], 0x20
mov dword [esp + 0x4c], eax
je 0x41a705
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push edi
call fcn.0041c730
add esp, 0x10
dec dword [esp + 0x4c]
jne 0x41a5a7
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x30]
inc edx
mov dword [esp + 0x50], esi
mov dword [esp + 0x1c], edx
jmp 0x41a7df
cmp byte [esp + 0x60], 0
mov eax, dword [eax - 4]
mov ecx, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x40], ecx
jne 0x41a65b
cmp dword [esp + 0x4c], 0
jle 0x41a65b
xor edx, edx
test eax, eax
je 0x41a616
cmp dx, word [eax]
je 0x41a610
add eax, 2
xor edx, edx
cmp dx, word [eax]
jne 0x41a606
mov edx, eax
sub edx, ecx
sar edx, 1
mov eax, ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x2c], eax
cmp ecx, edx
jle 0x41a65b
sub ecx, edx
mov dword [esp + 0x54], ecx
je 0x41a65b
mov edi, ecx
mov edi, edi
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
add esp, 0x10
dec edi
jne 0x41a630
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x50], esi
test eax, eax
je 0x41a6a3
xor ecx, ecx
cmp cx, word [eax]
je 0x41a6a3
test edi, edi
je 0x41a69b
mov al, byte [eax]
mov byte [esp + 0x1a], al
lea eax, [esp + 0x1a]
push 1
push eax
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x30]
call fcn.0041c730
mov eax, dword [esp + 0x3c]
xor ecx, ecx
add eax, 2
add esp, 0x10
dec edi
mov dword [esp + 0x2c], eax
cmp cx, word [eax]
jne 0x41a666
mov esi, dword [esp + 0x30]
mov dword [esp + 0x50], esi
cmp byte [esp + 0x60], 0
je 0x41a701
mov ecx, dword [esp + 0x4c]
test ecx, ecx
jle 0x41a701
sub eax, dword [esp + 0x40]
mov edi, dword [esp + 0x24]
sar eax, 1
cmp ecx, eax
jle 0x41a705
sub ecx, eax
mov byte [esp + 0x1b], 0x20
mov dword [esp + 0x4c], ecx
je 0x41a705
lea ecx, [ecx]
push 1
lea eax, [esp + 0x1f]
push eax
lea eax, [esp + 0x38]
push eax
push edi
call fcn.0041c730
add esp, 0x10
dec dword [esp + 0x4c]
jne 0x41a6d0
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x30]
inc edx
mov dword [esp + 0x50], esi
mov dword [esp + 0x1c], edx
jmp 0x41a7df
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
inc edx
mov dword [esp + 0x1c], edx
jmp 0x41a7df
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
sub eax, edx
mov ecx, dword [edi + 4]
sub ecx, dword [edi]
lea edi, [eax + esi]
cmp edi, ecx
jb 0x41a748
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0
push eax
lea eax, [ecx + ecx]
mov ecx, dword [esp + 0x28]
push eax
call fcn.0041cae0
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
add eax, esi
cmp esi, edi
jae 0x4188e7
jmp 0x41a760
mov cl, byte [edx]
test cl, cl
je 0x4188e3
inc esi
mov byte [eax], cl
inc eax
mov dword [esp + 0x30], esi
inc edx
cmp esi, edi
jb 0x41a760
inc dword [esp + 0x1c]
jmp 0x41a7d3
mov edi, dword [esp + 0x24]
mov eax, ecx
mov edx, dword [esp + 0x2c]
sub eax, edx
mov ecx, dword [edi + 4]
sub ecx, dword [edi]
lea edi, [eax + esi]
cmp edi, ecx
jb 0x41a7b0
lea eax, [esp + 0x1a]
mov byte [esp + 0x1a], 0
push eax
lea eax, [ecx + ecx]
mov ecx, dword [esp + 0x28]
push eax
call fcn.0041cae0
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
add eax, esi
cmp esi, edi
jae 0x41a7d7
lea esp, [esp]
mov cl, byte [edx]
test cl, cl
je 0x41a7d3
inc esi
mov byte [eax], cl
inc eax
mov dword [esp + 0x30], esi
inc edx
cmp esi, edi
jb 0x41a7c0
mov dword [esp + 0x50], esi
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
cmp byte [edx], 0
jne 0x418890
jmp case.default.0x41929b
mov eax, dword [edi + 4]
sub eax, dword [edi]
lea edi, [esi + 1]
cmp edi, eax
jb 0x41a810
lea ecx, [esp + 0x1a]
mov byte [esp + 0x1a], 0
push ecx
mov ecx, dword [esp + 0x28]
add eax, eax
push eax
call fcn.0041cae0
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
add eax, esi
cmp esi, edi
jae case.default.0x41929b
lea esp, [esp]
mov cl, byte [edx]
test cl, cl
je case.default.0x41929b
mov byte [eax], cl
inc esi
inc eax
inc edx
cmp esi, edi
jb 0x41a820
mov dword [esp + 0x170], 0xffffffff
mov eax, dword [esp + 0x34]
test eax, eax
je 0x41a864
push eax
call dword [sym.imp.MSVCR120.dll_void___cdecl_operator_delete_void__]
add esp, 4
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov ecx, dword [esp + 0x168]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [esp + 0x154]
xor ecx, esp
call fcn.0043babe
mov esp, ebp
pop ebp
ret