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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x1c8
movsd xmm0, qword [0x445f50]
mov eax, ecx
xor ecx, ecx
mov dword [esp + 0x48], eax
push esi
xorps xmm2, xmm2
mov dword [esp + 0xe8], edx
mov esi, eax
mov dword [esp + 0x80], 0
movsx eax, byte [eax]
movaps xmm1, xmm2
mov dword [esp + 0xb8], 0
mov dword [esp + 0x40], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x38], ecx
movsd qword [esp + 0x74], xmm2
movsd qword [esp + 0xc], xmm1
mov dword [esp + 0x18], esi
movsd qword [esp + 0x5c], xmm0
push edi
cmp eax, 0x2d
ja case.0x4151e7.1
nop dword [eax + eax]
movzx eax, byte [eax + 0x416348]
jmp dword [eax*4 + 0x416334]
movsx eax, byte [esi + 1]
inc esi
mov dword [esp + 0x1c], esi
cmp eax, 0x2d
jbe 0x4151e0
jmp case.0x4151e7.1
mov dword [esp + 0x3c], 1
inc esi
mov dword [esp + 0x1c], esi
cmp byte [esi], cl
je case.0x415513.74
mov dl, byte [esi]
cmp dl, 0x30
jne 0x415236
mov dword [esp + 0x5c], 1
inc esi
cmp byte [esi], 0x30
je 0x415222
mov dl, byte [esi]
mov dword [esp + 0x1c], esi
test dl, dl
je 0x41622a
xor ecx, ecx
movsx edx, dl
xor eax, eax
mov dword [esp + 0x54], esi
xor edi, edi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x18], eax
cmp edx, 0x30
jl 0x415292
cmp edx, 0x39
jg 0x41528e
cmp eax, 9
jge 0x415269
lea eax, [edi - 6]
lea eax, [edi + eax*4]
lea edi, [edx + eax*2]
jmp 0x415277
cmp eax, 0x10
jge 0x41527b
lea eax, [ecx - 6]
lea eax, [ecx + eax*4]
lea ecx, [edx + eax*2]
mov eax, dword [esp + 0x18]
movsx edx, byte [esi + 1]
inc esi
inc eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], eax
cmp edx, 0x30
jge 0x415254
mov dword [esp + 0x38], ecx
mov ecx, esi
mov dword [esp + 0x20], eax
sub ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x94], ecx
cmp edx, 0x2e
jne 0x4153cf
movsx edx, byte [esi + 1]
inc esi
mov ecx, esi
mov dword [esp + 0x24], esi
sub ecx, dword [esp + 0x54]
mov dword [esp + 0x58], ecx
mov dword [esp + 0x98], ecx
sub ecx, dword [esp + 0x94]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x1c], esi
test eax, eax
jne 0x415333
cmp edx, 0x30
jne 0x415317
xor eax, eax
nop word [eax + eax]
movsx edx, byte [esi + 1]
inc esi
inc eax
mov dword [esp + 0x1c], esi
cmp edx, 0x30
je 0x415300
mov dword [esp + 0x34], eax
mov dword [esp + 0x24], esi
lea eax, [edx - 0x31]
cmp eax, 8
ja 0x4153cb
mov eax, dword [esp + 0x34]
mov dword [esp + 0x48], eax
xor eax, eax
mov dword [esp + 0x54], esi
jmp 0x415343
lea eax, [edx - 0x30]
cmp eax, 9
ja 0x4153c7
mov eax, dword [esp + 0x34]
inc eax
sub edx, 0x30
mov dword [esp + 0x34], eax
mov dword [esp + 0x40], edx
je 0x4153b5
add dword [esp + 0x48], eax
cmp eax, 1
jle 0x41538b
mov edx, dword [esp + 0x18]
lea esi, [eax - 1]
mov eax, edx
inc edx
cmp eax, 9
jge 0x415370
lea edi, [edi + edi*4]
add edi, edi
jmp 0x41537a
cmp edx, 0x10
jg 0x41537a
lea ecx, [ecx + ecx*4]
add ecx, ecx
sub esi, 1
jne 0x415361
mov esi, dword [esp + 0x24]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x18]
inc dword [esp + 0x18]
cmp eax, 9
jge 0x4153a0
lea eax, [edi + edi*4]
lea edi, [edx + eax*2]
jmp 0x4153ad
cmp dword [esp + 0x18], 0x10
jg 0x4153ad
lea eax, [ecx + ecx*4]
lea ecx, [edx + eax*2]
mov dword [esp + 0x34], 0
movsx edx, byte [esi + 1]
inc esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], esi
jmp 0x415333
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x4c], 0
cmp edx, 0x65
je 0x4153e9
cmp edx, 0x45
jne 0x4154d4
test eax, eax
jne 0x4153fd
cmp dword [esp + 0x34], eax
jne 0x4153fd
cmp dword [esp + 0x5c], eax
je case.0x415513.74
movsx edx, byte [esi + 1]
mov dword [esp + 0x50], esi
mov eax, edx
inc esi
mov dword [esp + 0x40], 0
mov dword [esp + 0x1c], esi
sub eax, 0x2b
je 0x415426
sub eax, 2
jne 0x41542f
mov dword [esp + 0x40], 1
movsx edx, byte [esi + 1]
inc esi
mov dword [esp + 0x1c], esi
lea eax, [edx - 0x30]
cmp eax, 9
ja 0x4154cc
cmp edx, 0x30
jne 0x41544e
movsx edx, byte [esi + 1]
inc esi
cmp edx, 0x30
je 0x415440
mov dword [esp + 0x1c], esi
lea eax, [edx - 0x31]
cmp eax, 8
ja 0x4154c2
mov dword [esp + 0x4c], esi
add edx, 0xffffffd0
inc esi
mov dword [esp + 0x24], edx
mov dword [esp + 0x1c], esi
movsx edx, byte [esi]
cmp edx, 0x30
jl 0x415491
mov ecx, dword [esp + 0x24]
cmp edx, 0x39
jg 0x41548d
inc esi
lea ecx, [ecx + ecx*4]
lea ecx, [ecx - 0x18]
mov dword [esp + 0x1c], esi
lea ecx, [edx + ecx*2]
movsx edx, byte [esi]
cmp edx, 0x30
jge 0x415472
mov dword [esp + 0x24], ecx
mov eax, esi
sub eax, dword [esp + 0x4c]
cmp eax, 8
jg 0x4154a7
mov eax, dword [esp + 0x24]
cmp eax, 0x4e1f
jle 0x4154ac
mov eax, 0x4e1f
mov ecx, eax
neg ecx
cmp dword [esp + 0x40], 0
cmove ecx, eax
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x38]
jmp 0x4154d4
mov dword [esp + 0x4c], 0
jmp 0x4154d4
mov esi, dword [esp + 0x50]
mov dword [esp + 0x1c], esi
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x4155df
cmp dword [esp + 0x34], eax
jne 0x41622a
cmp dword [esp + 0x5c], eax
jne 0x41622a
mov eax, dword [esp + 0x44]
test eax, eax
jne case.0x415513.74
add edx, 0xffffffb7
cmp edx, 0x25
ja case.0x415513.74
movzx eax, byte [edx + 0x416384]
jmp dword [eax*4 + 0x416378]
mov edx, 0x6e
mov edi, 0x445d09
movsx ecx, byte [esi + 1]
inc esi
lea eax, [ecx - 0x41]
cmp eax, 0x19
ja 0x415534
add ecx, 0x20
cmp ecx, edx
jne case.0x415513.74
movsx edx, byte [edi]
inc edi
test edx, edx
jne 0x415524
mov eax, esi
lea ecx, [esp + 0x1c]
mov edx, str.inity
mov dword [esp + 0x1c], eax
call fcn.00414990
mov esi, dword [esp + 0x1c]
test eax, eax
jne 0x415561
inc esi
mov dword [esp + 0x14], 0x7ff00000
mov dword [esp + 0x10], 0
movsd xmm1, qword [esp + 0x10]
jmp 0x41622a
mov edx, 0x61
mov edi, 0x445d15
movsx ecx, byte [esi + 1]
inc esi
lea eax, [ecx - 0x41]
cmp eax, 0x19
ja 0x415596
add ecx, 0x20
cmp ecx, edx
jne case.0x415513.74
movsx edx, byte [edi]
inc edi
test edx, edx
jne 0x415586
inc esi
mov dword [esp + 0x14], 0x7ff80000
mov dword [esp + 0x1c], esi
mov dword [esp + 0x10], edx
cmp byte [esi], 0x28
jne 0x415571
lea edx, [esp + 0x1c]
lea ecx, [esp + 0x10]
call fcn.004149d0
movsd xmm1, qword [esp + 0x10]
mov esi, dword [esp + 0x1c]
jmp 0x41622a
mov esi, dword [esp + 0x50]
xor eax, eax
jmp 0x41622e
mov edx, dword [esp + 0x4c]
sub edx, dword [esp + 0x48]
mov dword [esp + 0x4c], edx
mov dword [esp + 0xa4], edx
mov edx, dword [esp + 0x20]
test edx, edx
movd xmm0, edi
cmove edx, eax
mov dword [esp + 0x20], edx
mov edx, 0x10
cmp eax, edx
cvtdq2pd xmm0, xmm0
cmovl edx, eax
mov eax, edi
shr eax, 0x1f
mov dword [esp + 0x50], edx
addsd xmm0, qword [eax*8 + 0x445f30]
movsd qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm0
cmp edx, 9
jle 0x415668
movsd xmm1, qword [edx*8 + 0x445d40]
mulsd xmm1, xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
addsd xmm0, qword [ecx*8 + 0x445f30]
addsd xmm1, xmm0
movaps xmm0, xmm1
movsd qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm0
mov eax, dword [esp + 0x18]
cmp eax, 0xf
jg 0x415705
call fcn.00422ad9
cmp eax, 1
jne 0x4156f7
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x41621e
jle 0x4156d5
cmp edx, 0x16
jg 0x4156a6
movsd xmm1, qword [esp + 0x28]
mulsd xmm1, qword [edx*8 + 0x445d88]
jmp 0x416224
mov ecx, 0xf
sub ecx, dword [esp + 0x18]
lea eax, [ecx + 0x16]
cmp edx, eax
jg 0x4156f7
movsd xmm1, qword [esp + 0x28]
sub edx, ecx
mulsd xmm1, qword [ecx*8 + 0x445d88]
mulsd xmm1, qword [edx*8 + 0x445d88]
jmp 0x416224
cmp edx, 0xffffffea
jl 0x4156f7
movsd xmm1, qword [esp + 0x28]
lea eax, [edx*8]
mov ecx, 0x445d88
sub ecx, eax
divsd xmm1, qword [ecx]
jmp 0x416224
movsd xmm2, qword [esp + 0x78]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
sub ecx, edx
xor edx, edx
add ecx, eax
mov dword [esp + 0x38], edx
mov dword [esp + 0xb8], edx
test ecx, ecx
jle 0x4157dc
movsd xmm1, qword [esp + 0x28]
mov eax, ecx
and eax, 0xf
je 0x41573e
mulsd xmm1, qword [eax*8 + 0x445d88]
movsd qword [esp + 0x10], xmm1
and ecx, 0xfffffff0
je 0x4158d8
cmp ecx, 0x134
jg 0x416025
sar ecx, 4
xor eax, eax
cmp ecx, 1
jle 0x41577c
nop dword [eax]
test cl, 1
je 0x415774
mulsd xmm1, qword [eax*8 + 0x445d30]
movsd qword [esp + 0x10], xmm1
sar ecx, 1
inc eax
cmp ecx, 1
jg 0x415760
sub dword [esp + 0x14], 0x3500000
movsd xmm0, qword [eax*8 + 0x445d30]
mulsd xmm0, qword [esp + 0x10]
movsd qword [esp + 0x10], xmm0
mov eax, dword [esp + 0x14]
mov ecx, eax
and ecx, 0x7ff00000
cmp ecx, 0x7ca00000
ja 0x416025
cmp ecx, 0x7c900000
jbe 0x4157ce
mov dword [esp + 0x14], 0x7fefffff
mov dword [esp + 0x10], 0xffffffff
jmp 0x4158d8
add eax, 0x3500000
mov dword [esp + 0x14], eax
jmp 0x4158d8
jns 0x4158d8
movsd xmm1, qword [esp + 0x28]
neg ecx
mov eax, ecx
and eax, 0xf
je 0x415806
divsd xmm1, qword [eax*8 + 0x445d88]
movsd qword [esp + 0x28], xmm1
movsd qword [esp + 0x10], xmm1
sar ecx, 4
test ecx, ecx
je 0x4158d8
cmp ecx, 0x20
jge 0x416204
test cl, 0x10
mov eax, 0x6a
cmovne edx, eax
mov dword [esp + 0x38], edx
mov dword [esp + 0xb8], edx
test ecx, ecx
jle 0x41585e
mov eax, 0x445d60
nop dword [eax]
test cl, 1
je 0x41584f
mulsd xmm1, qword [eax]
movsd qword [esp + 0x10], xmm1
sar ecx, 1
add eax, 8
test ecx, ecx
jg 0x415840
movsd qword [esp + 0x28], xmm1
test edx, edx
je 0x4158c4
mov edx, dword [esp + 0x14]
mov ecx, 0x6b
mov eax, edx
shr eax, 0x14
and eax, 0x7ff
sub ecx, eax
test ecx, ecx
jle 0x4158c4
cmp ecx, 0x20
jl 0x4158b3
mov dword [esp + 0x10], 0
cmp ecx, 0x35
jl 0x41589d
mov dword [esp + 0x14], 0x3700000
movsd xmm1, qword [esp + 0x10]
jmp 0x4158ca
add ecx, 0xffffffe0
or eax, 0xffffffff
shl eax, cl
and edx, eax
mov dword [esp + 0x14], edx
movsd xmm1, qword [esp + 0x10]
jmp 0x4158ca
or eax, 0xffffffff
shl eax, cl
and dword [esp + 0x10], eax
movsd xmm1, qword [esp + 0x10]
jmp 0x4158ca
movsd xmm1, qword [esp + 0x28]
ucomisd xmm1, xmm2
lahf
test ah, 0x44
jnp 0x416204
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov dword [esp + 0xac], esi
mov dword [esp + 0xb0], edx
cmp esi, 0x28
jle 0x4159c0
mov eax, 0x12
mov ecx, eax
cmp edx, eax
jge 0x415908
mov eax, dword [esp + 0x44]
add eax, ecx
mov esi, dword [esp + 0x94]
mov edx, dword [esp + 0x54]
dec eax
cmp eax, dword [esp + 0x58]
jg 0x415921
cmp eax, esi
jl 0x415921
lea eax, [esi - 1]
cmp byte [eax + edx], 0x30
jne 0x41592a
dec ecx
jmp 0x415913
mov esi, dword [esp + 0x18]
mov edx, ecx
sub esi, ecx
add dword [esp + 0x4c], esi
mov esi, ecx
cmp dword [esp + 0x20], ecx
mov dword [esp + 0x18], esi
cmovle edx, dword [esp + 0x20]
mov dword [esp + 0x20], edx
mov eax, edx
mov dword [esp + 0x40], eax
cmp ecx, 9
jge 0x4159c0
mov ecx, eax
xor edi, edi
xor edx, edx
test ecx, ecx
jle 0x415982
mov esi, eax
mov eax, dword [esp + 0x54]
lea edi, [edi + edi*4]
lea edi, [edi - 0x18]
movsx ecx, byte [edx + eax]
inc edx
lea edi, [ecx + edi*2]
cmp edx, esi
jl 0x415960
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x20], ecx
cmp edx, esi
jge 0x4159bc
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x58]
add eax, dword [esp + 0x54]
sub esi, edx
mov dword [esp + 0x40], esi
mov esi, eax
mov dword [esp + 0x58], eax
sub dword [esp + 0x40], 1
lea edi, [edi + edi*4]
movsx eax, byte [esi]
lea edi, [edi - 0x18]
lea esi, [esi + 1]
lea edi, [eax + edi*2]
jne 0x4159a2
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
push dword [esp + 0x44]
mov ecx, dword [esp + 0x58]
push edi
push esi
call fcn.00413d10
movsd xmm0, qword [0x445f08]
mov edi, eax
movsd qword [esp + 0xfc], xmm0
add esp, 0xc
movsd xmm0, qword [0x445f00]
movsd qword [esp + 0xd8], xmm0
movsd xmm0, qword [0x445ef0]
movsd qword [esp + 0xc0], xmm0
movsd xmm0, qword [0x445f20]
movsd qword [esp + 0xf8], xmm0
movsd xmm0, qword [0x445f10]
movsd qword [esp + 0x100], xmm0
movsd xmm0, qword [0x445ee0]
movsd qword [esp + 0x108], xmm0
movsd xmm0, qword [0x445ee8]
movsd qword [esp + 0x110], xmm0
movsd xmm0, qword [0x445ef8]
mov dword [esp + 0x58], edi
movsd qword [esp + 0x118], xmm0
mov ecx, dword [edi + 4]
mov esi, 1
call fcn.00413b30
mov ecx, dword [edi + 0x10]
mov dword [esp + 0x44], eax
lea ecx, [ecx*4 + 8]
push ecx
lea ecx, [edi + 0xc]
push ecx
lea ecx, [eax + 0xc]
push ecx
call fcn.00419e80
add esp, 0xc
lea eax, [esp + 0x5c]
lea edx, [esp + 0x50]
lea ecx, [esp + 0x10]
push eax
call fcn.00414720
add esp, 4
mov dword [esp + 0x20], eax
mov ecx, esi
call fcn.00413eb0
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x4c]
test eax, eax
js 0x415ac2
xor edi, edi
mov dword [esp + 0x24], eax
mov ecx, eax
jmp 0x415acc
mov edi, eax
neg edi
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x28], ecx
mov dword [esp + 0xc8], edi
test edx, edx
js 0x415ae3
add edi, edx
jmp 0x415ae9
sub ecx, edx
mov dword [esp + 0x24], ecx
sub edx, dword [esp + 0x38]
mov esi, edi
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x40], edi
mov dword [esp + 0xd4], edi
lea ecx, [eax - 1]
add ecx, edx
add edx, 0x433
mov dword [esp + 0x48], edx
mov edx, 0x36
sub edx, eax
mov eax, dword [esp + 0x38]
cmp ecx, 0xfffffc02
mov ecx, dword [esp + 0x24]
cmovl edx, dword [esp + 0x48]
add eax, edx
add edi, edx
add ecx, eax
mov edx, esi
cmp edi, ecx
mov dword [esp + 0x24], ecx
mov eax, ecx
cmovl eax, edi
cmp eax, esi
cmovle edx, eax
test edx, edx
jle 0x415b4d
sub ecx, edx
sub edi, edx
mov dword [esp + 0x24], ecx
sub esi, edx
mov eax, dword [esp + 0xc8]
test eax, eax
jle 0x415c59
mov ecx, dword [esp + 0x34]
mov edx, eax
call fcn.00414070
mov edx, dword [esp + 0x20]
mov ecx, eax
mov dword [esp + 0x34], eax
call fcn.00413f50
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x40], eax
test ecx, ecx
je 0x415c51
cmp dword [ecx + 4], 7
jle 0x415ba4
push ecx
call fcn.00416f8a
mov eax, dword [esp + 0x44]
add esp, 4
mov ecx, eax
mov dword [esp + 0x20], ecx
jmp 0x415c5d
mov eax, dword [esp + 0x84]
test al, 1
je 0x415bc5
and eax, 0xfffffffe
lea ecx, [esp + 0x120]
mov dword [esp + 0x84], eax
call fcn.0040b560
mov eax, dword [0x44cd20]
test eax, 0xfffffffe
jne 0x415c18
mov ecx, 1
xor eax, eax
mov edx, 0x44cd20
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x415c04
mov eax, dword [0x44cd20]
cmp eax, 1
jne 0x415c18
nop
push 0
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [0x44cd20]
cmp eax, 1
je 0x415bf0
jmp 0x415c18
mov dword [0x44cd24], 0
mov dword [0x44cd20], 0x44cd24
mov eax, dword [0x44cd20]
push eax
call dword [sym.imp.KERNEL32.dll_AcquireSRWLockExclusive]
mov edx, dword [esp + 0x20]
mov ecx, dword [edx + 4]
mov eax, dword [ecx*4 + 0x44cd00]
mov dword [ecx*4 + 0x44cd00], edx
xor ecx, ecx
mov dword [edx], eax
call fcn.00413b00
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x40]
mov ecx, eax
mov dword [esp + 0x20], ecx
jmp 0x415c5d
mov ecx, dword [esp + 0x20]
test edi, edi
jle 0x415c70
mov edx, edi
call fcn.00414220
mov edi, eax
mov dword [esp + 0x20], edi
jmp 0x415c74
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
test eax, eax
jle 0x415c8d
mov ecx, dword [esp + 0x44]
mov edx, eax
call fcn.00414070
mov dword [esp + 0x44], eax
jmp 0x415c91
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
test ecx, ecx
jle 0x415ca6
mov edx, ecx
mov ecx, eax
call fcn.00414220
mov dword [esp + 0x44], eax
test esi, esi
jle 0x415cbd
mov ecx, dword [esp + 0x34]
mov edx, esi
call fcn.00414220
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x44]
mov edx, eax
mov ecx, edi
call fcn.00414430
mov edx, dword [esp + 0x34]
mov ecx, eax
mov dword [esp + 0x48], eax
mov edi, dword [eax + 0xc]
mov dword [esp + 0x24], edi
mov dword [esp + 0xa0], edi
mov dword [eax + 0xc], 0
call fcn.004143e0
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0xac]
cmp edx, esi
jle 0x415d01
test eax, eax
jle 0x415ff0
test eax, eax
js 0x416158
je 0x41604b
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x48]
call fcn.004148a0
movaps xmm1, xmm0
movsd xmm0, qword [esp + 0xf0]
comisd xmm0, xmm1
jb 0x415db5
test edi, edi
je 0x415d47
movsd xmm2, qword [esp + 0xd8]
movaps xmm1, xmm2
jmp 0x415e02
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x415d91
test dword [esp + 0x14], 0xfffff
jne 0x415da1
movsd xmm0, qword [esp + 0xd8]
comisd xmm0, xmm1
jbe 0x415d7e
movsd xmm1, qword [esp + 0xc0]
movaps xmm2, xmm1
xorps xmm2, xmmword [esp + 0x60]
jmp 0x415e02
mulsd xmm1, qword [esp + 0xc0]
movaps xmm2, xmm1
xorps xmm2, xmmword [esp + 0x60]
jmp 0x415e02
cmp eax, 1
jne 0x415da1
cmp dword [esp + 0x14], 0
je 0x416004
movsd xmm1, qword [esp + 0xd8]
movsd xmm2, qword [esp + 0xf8]
jmp 0x415e02
mulsd xmm1, qword [esp + 0xc0]
movsd qword [esp + 0xc8], xmm1
test edi, edi
je 0x415dd3
movsd qword [esp + 0x28], xmm1
jmp 0x415de1
movaps xmm0, xmm1
xorps xmm0, xmmword [esp + 0x60]
movsd qword [esp + 0x28], xmm0
call fcn.00422ad9
movsd xmm2, qword [esp + 0x28]
movsd xmm1, qword [esp + 0xc8]
test eax, eax
jne 0x415e08
addsd xmm2, qword [esp + 0xc0]
movsd qword [esp + 0x28], xmm2
mov eax, dword [esp + 0x14]
mov edi, eax
and edi, 0x7ff00000
cmp edi, 0x7fe00000
jne 0x415eac
movsd xmm0, qword [esp + 0x10]
lea ecx, [esp + 0x10]
sub eax, 0x3500000
movsd qword [esp + 0x88], xmm0
mov dword [esp + 0x14], eax
call fcn.00414590
mulsd xmm0, xmm2
addsd xmm0, qword [esp + 0x10]
movsd qword [esp + 0x10], xmm0
mov ecx, dword [esp + 0x14]
mov eax, ecx
and eax, 0x7ff00000
cmp eax, 0x7ca00000
jb 0x415e93
cmp dword [esp + 0x8c], 0x7fefffff
jne 0x415e7e
cmp dword [esp + 0x88], 0xffffffff
je 0x416021
mov dword [esp + 0x14], 0x7fefffff
mov dword [esp + 0x10], 0xffffffff
jmp 0x415fc3
mov edx, dword [esp + 0x24]
add ecx, 0x3500000
mov dword [esp + 0x14], ecx
movsd xmm0, qword [esp + 0x10]
jmp 0x415f4f
cmp dword [esp + 0x38], 0
je 0x415f2e
cmp edi, 0x6a00000
ja 0x415f2e
movsd xmm0, qword [esp + 0x100]
comisd xmm0, xmm1
jb 0x415f02
movaps xmm0, xmm1
call fcn.00435e01
test eax, eax
mov edx, 1
cmove eax, edx
mov edx, dword [esp + 0x24]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x445f30]
movaps xmm0, xmm1
test edx, edx
jne 0x415f0c
xorps xmm0, xmmword [esp + 0x60]
jmp 0x415f0c
movsd xmm0, qword [esp + 0x28]
mov edx, dword [esp + 0x24]
mov eax, 0x6b00000
movsd qword [esp + 0xe0], xmm0
sub eax, edi
add dword [esp + 0xe4], eax
movsd xmm2, qword [esp + 0xe0]
jmp 0x415f32
mov edx, dword [esp + 0x24]
lea ecx, [esp + 0x10]
call fcn.00414590
mulsd xmm0, xmm2
addsd xmm0, qword [esp + 0x10]
movsd qword [esp + 0x10], xmm0
mov ecx, dword [esp + 0x14]
movsd qword [esp + 0x28], xmm0
cmp dword [esp + 0xac], esi
jne 0x415fc3
cmp dword [esp + 0x38], 0
jne 0x415fc3
mov eax, ecx
and eax, 0x7ff00000
cmp edi, eax
jne 0x415fc3
cvttsd2si eax, xmm1
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm1, xmm0
test edx, edx
jne 0x415fa1
cmp dword [esp + 0x10], edx
jne 0x415fa1
test ecx, 0xfffff
jne 0x415fa1
movsd xmm0, qword [esp + 0x108]
comisd xmm0, xmm1
jmp 0x415fbd
movsd xmm0, qword [esp + 0x110]
comisd xmm0, xmm1
ja 0x41626b
comisd xmm1, xmmword [esp + 0x118]
ja 0x41626b
mov ecx, dword [esp + 0x20]
call fcn.00413bf0
mov ecx, dword [esp + 0x44]
call fcn.00413bf0
mov ecx, dword [esp + 0x34]
call fcn.00413bf0
mov ecx, dword [esp + 0x48]
call fcn.00413bf0
mov edi, dword [esp + 0x58]
jmp 0x415a60
test edi, edi
jne 0x41625f
mov dword [esp + 0xac], esi
jmp 0x416160
cmp dword [esp + 0xac], esi
jle 0x4161f8
mov dword [esp + 0xbc], 1
jmp 0x41625f
mov esi, dword [esp + 0x1c]
call fcn.00421930
mov dword [esp + 0x14], 0x7ff00000
mov dword [esp + 0x10], 0
movsd xmm1, qword [esp + 0x10]
mov dword [eax], 0x22
jmp 0x416224
mov ecx, dword [esp + 0x10]
test edi, edi
je 0x4160be
mov edx, dword [esp + 0x14]
mov eax, edx
and eax, 0xfffff
cmp eax, 0xfffff
jne 0x4160d8
cmp dword [esp + 0x38], 0
je 0x41608f
mov eax, edx
and eax, 0x7ff00000
cmp eax, 0x6a00000
ja 0x41608f
shr eax, 0x14
mov ecx, 0x6b
sub ecx, eax
or eax, 0xffffffff
shl eax, cl
mov ecx, dword [esp + 0x10]
jmp 0x416092
or eax, 0xffffffff
cmp ecx, eax
jne 0x4160d8
and edx, 0x7ff00000
mov dword [esp + 0x10], 0
add edx, 0x100000
mov dword [esp + 0xa0], 0
mov dword [esp + 0x14], edx
jmp 0x41625f
mov edi, dword [esp + 0x14]
test edi, 0xfffff
jne 0x4160d2
test ecx, ecx
je 0x4161cb
mov edi, dword [esp + 0x24]
jmp 0x4160df
mov edx, dword [esp + 0xac]
test cl, 1
je 0x41625f
lea ecx, [esp + 0x10]
call fcn.00414590
test edi, edi
je 0x41611a
addsd xmm0, qword [esp + 0x10]
movsd qword [esp + 0x28], xmm0
movsd qword [esp + 0x10], xmm0
mov eax, 1
sub eax, edi
mov dword [esp + 0xa0], eax
jmp 0x41626b
movsd xmm1, qword [esp + 0x10]
subsd xmm1, xmm0
movsd xmm0, qword [esp + 0x78]
ucomisd xmm1, xmm0
movsd qword [esp + 0x28], xmm1
movsd qword [esp + 0x10], xmm1
lahf
test ah, 0x44
jp 0x416107
cmp edx, esi
jle 0x4161fe
mov dword [esp + 0xbc], 1
jmp 0x41626b
test edi, edi
jne 0x41625f
cmp dword [esp + 0x10], 0
jne 0x41625f
mov edi, dword [esp + 0x14]
test edi, 0xfffff
jne 0x41625f
mov eax, edi
and eax, 0x7ff00000
cmp eax, 0x6b00000
jbe 0x41625f
mov eax, dword [esp + 0x48]
cmp dword [eax + 0x14], 0
jne 0x4161a1
cmp dword [eax + 0x10], 1
jle 0x41625f
mov edx, 1
mov ecx, eax
call fcn.00414220
mov edx, dword [esp + 0x34]
mov ecx, eax
mov dword [esp + 0x48], eax
call fcn.004143e0
test eax, eax
jle 0x41625f
mov edx, dword [esp + 0xac]
cmp dword [esp + 0x38], 0
je 0x41624c
mov eax, edi
and eax, 0x7ff00000
cmp eax, 0x6b00000
ja 0x41624c
cmp eax, 0x3700000
ja 0x41625f
cmp edx, esi
jle 0x4161f8
mov dword [esp + 0xbc], 1
jmp 0x41625f
movsd xmm0, qword [esp + 0x78]
mov esi, dword [esp + 0x1c]
jmp 0x41620a
movsd xmm0, qword [esp + 0x78]
movaps xmm1, xmm0
movsd qword [esp + 0x28], xmm1
call fcn.00421930
mov dword [eax], 0x22
movsd xmm1, qword [esp + 0x28]
movsd xmm0, qword [esp + 0x60]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0xec]
test ecx, ecx
je 0x41623b
mov dword [ecx], esi
test eax, eax
je 0x416328
xorps xmm0, xmm1
pop edi
pop esi
mov esp, ebp
pop ebp
ret
and edi, 0x7ff00000
mov dword [esp + 0x10], 0xffffffff
dec edi
mov dword [esp + 0x14], edi
movsd xmm1, qword [esp + 0x10]
movsd qword [esp + 0x28], xmm1
mov ecx, dword [esp + 0x20]
call fcn.00413bf0
mov ecx, dword [esp + 0x44]
call fcn.00413bf0
mov ecx, dword [esp + 0x34]
call fcn.00413bf0
mov ecx, dword [esp + 0x58]
call fcn.00413bf0
mov ecx, dword [esp + 0x48]
call fcn.00413bf0
cmp dword [esp + 0xac], esi
jle 0x4162c8
mov edx, dword [esp + 0x54]
lea eax, [esp + 0x94]
push eax
lea ecx, [esp + 0x14]
call fcn.00414d00
mov eax, dword [esp + 0xbc]
add esp, 4
movsd xmm1, qword [esp + 0x10]
jmp 0x4162d2
movsd xmm1, qword [esp + 0x28]
mov eax, dword [esp + 0x38]
test eax, eax
je 0x41631f
mov dword [esp + 0x8c], 0x39500000
mov dword [esp + 0x88], 0
mulsd xmm1, qword [esp + 0x88]
movsd qword [esp + 0x10], xmm1
test dword [esp + 0x14], 0x7ff00000
movsd qword [esp + 0x28], xmm1
jne 0x41631f
call fcn.00421930
mov esi, dword [esp + 0x1c]
mov dword [eax], 0x22
jmp 0x41621e
mov esi, dword [esp + 0x1c]
jmp 0x416224
pop edi
movaps xmm0, xmm1
pop esi
mov esp, ebp
pop ebp
ret