Function at 0x40e960
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x498
mov eax, dword [0x452004]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
mov eax, ecx
mov dword [ebp - 0x458], edx
mov ecx, dword [ebp + 8]
mov ebx, ecx
push edi
xor edi, edi
mov dword [ebp - 0x45c], eax
test ecx, ecx
mov dword [ebp - 0x460], ecx
mov dword [ebp - 0x42c], ebx
sete byte [ebp - 0x415]
mov dword [ebp - 0x41c], edi
test byte [0x452bc0], 1
jne 0x40eab9
mov esi, 0x452bc0
lock bts dword ds:[esi], 0x1f
jb 0x40ea9d
push 4
lea eax, [ebp - 0x10]
push eax
push 0xe
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x40e9fe
mov ax, word [ebp - 0x10]
test ax, ax
je 0x40e9fe
movzx ecx, word [0x452bc8]
cmp word [ebp - 0xe], di
movzx eax, ax
cmove ecx, eax
mov word [0x452bc8], cx
push 4
lea eax, [ebp - 0x10]
push eax
push 0xf
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x40ea36
mov ax, word [ebp - 0x10]
test ax, ax
je 0x40ea36
movzx ecx, word [0x452c08]
cmp word [ebp - 0xe], di
movzx eax, ax
cmove ecx, eax
mov word [0x452c08], cx
cmp word [0x452bc8], 0x2e
mov edi, edi
je 0x40ea56
push 0x4321fc
push 0
call fcn.0041909e
add esp, 8
mov dword [0x453da8], eax
lock bts dword [esi], 0
jb 0x40eaad
mov esi, dword [0x452bc4]
test esi, esi
je 0x40ea70
push 0
push esi
call dword [sym.imp.ntdll.dll_NtSetEvent]
mov eax, 0xfffffffe
mov ecx, 0x452bc0
lock xadd dword [ecx], eax
shr eax, 1
and eax, 0x7fff
sub eax, 1
jne 0x40eaad
test esi, esi
je 0x40eaad
push esi
call dword [sym.imp.ntdll.dll_NtClose]
mov dword [0x452bc4], edi
jmp 0x40eaad
test byte [0x452bc0], 1
jne 0x40eab9
mov ecx, esi
call fcn.00410f80
mov eax, dword [ebp - 0x45c]
mov edx, dword [ebp - 0x458]
fld qword [0x4501c8]
mov ecx, dword [ebp - 0x460]
mov si, word [0x452c08]
mov dword [ebp - 0x46c], ecx
mov ecx, dword [ebp - 0x460]
fst qword [ebp - 0x48c]
fld qword [0x4501b8]
mov dword [ebp - 0x470], ecx
mov ecx, dword [ebp - 0x460]
fst qword [ebp - 0x494]
mov dword [ebp - 0x474], 3
mov word [ebp - 0x426], si
mov dword [ebp - 0x464], ecx
mov esi, eax
mov dword [ebp - 0xc], edi
mov ecx, eax
mov dword [ebp - 0x43c], esi
dec edx
mov dword [ebp - 0x420], 0
add eax, 0x18
mov dword [ebp - 0x458], edx
mov edx, dword [esi]
mov dword [ebp - 0x45c], eax
mov eax, edx
and eax, 0x3f
mov dword [ebp - 0x438], edx
cmp eax, 0xc
ja case.default.0x40eb4a
jmp dword [eax*4 + 0x40fc98]
cmp byte [ebp - 0x415], 0
fstp st(1)
fstp st(0)
jne 0x40eb8d
lea eax, [edi + 2]
cmp eax, 0x208
jbe 0x40eb86
add ebx, 2
mov byte [ebp - 0x415], 1
add edi, 2
mov dword [ebp - 0x42c], ebx
mov dword [ebp - 0x41c], edi
jmp 0x40fb4e
mov ax, word [esi + 0x10]
mov word [ebx], ax
add ebx, 2
add edi, 2
mov dword [ebp - 0x42c], ebx
mov dword [ebp - 0x41c], edi
jmp 0x40fb4e
cmp byte [ebp - 0x415], 0
fstp st(1)
fstp st(0)
jne 0x40ebd5
mov ecx, dword [esi + 0x10]
lea eax, [ecx + edi]
cmp eax, 0x208
jbe 0x40ebc8
mov byte [ebp - 0x415], 1
jmp 0x40ebd5
push ecx
push dword [esi + 0x14]
push ebx
call fcn.00415e30
add esp, 0xc
mov eax, dword [esi + 0x10]
shr eax, 1
add edi, dword [esi + 0x10]
mov dword [ebp - 0x41c], edi
lea ebx, [ebx + eax*2]
mov dword [ebp - 0x42c], ebx
jmp 0x40fb4e
mov ecx, dword [esi + 0x10]
fstp st(1)
fstp st(0)
call fcn.0040a0a0
cmp byte [ebp - 0x415], 0
mov esi, eax
jne 0x40ec32
lea edx, [esi + esi]
lea ecx, [edx + edi]
cmp ecx, 0x208
jbe 0x40ec1f
mov byte [ebp - 0x415], 1
jmp 0x40ec32
mov eax, dword [ebp - 0x43c]
push edx
push dword [eax + 0x10]
push ebx
call fcn.00415e30
add esp, 0xc
lea ecx, [esi + esi]
mov eax, ecx
shr eax, 1
add edi, ecx
mov dword [ebp - 0x41c], edi
lea ebx, [ebx + eax*2]
mov dword [ebp - 0x42c], ebx
mov ax, word [0x452c08]
mov word [ebp - 0x426], ax
jmp 0x40fb4e
fstp st(1)
fstp st(0)
cmp edx, 3
jne 0x40ec6d
mov edi, dword [esi + 0x14]
mov esi, dword [esi + 0x10]
jmp 0x40ec7e
mov edi, dword [esi + 0x10]
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x40ec75
sub esi, ecx
push esi
push edi
lea eax, [ebp - 0x468]
push eax
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeSize]
test eax, eax
js 0x40f6ef
cmp byte [ebp - 0x415], 0
jne 0x40ecd3
mov eax, dword [ebp - 0x41c]
mov ecx, dword [ebp - 0x468]
add eax, ecx
cmp eax, 0x208
jbe 0x40ecbc
mov byte [ebp - 0x415], 1
jmp 0x40ecd9
push esi
push edi
push 0
push ecx
push ebx
lfence
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeN]
test eax, eax
js 0x40f6ef
mov ecx, dword [ebp - 0x468]
mov edi, dword [ebp - 0x41c]
mov eax, ecx
shr eax, 1
add edi, ecx
mov dword [ebp - 0x41c], edi
lea ebx, [ebx + eax*2]
mov ax, word [0x452c08]
mov dword [ebp - 0x42c], ebx
mov word [ebp - 0x426], ax
jmp 0x40fb4e
mov eax, dword [ecx + 0x10]
mov ecx, eax
cdq
mov esi, eax
shr ecx, 0x1f
xor esi, edx
mov dword [ebp - 0x420], ecx
sub esi, edx
mov edx, dword [ebp - 0x438]
jmp 0x40ed26
mov esi, dword [esi + 0x10]
fstp st(1)
fstp st(0)
mov dword [ebp - 0x424], 0xa
test edx, 0x100
je 0x40ed56
mov eax, dword [ebp - 0x43c]
mov al, byte [eax + 0xa]
cmp al, 2
jb 0x40ed56
cmp al, 0x45
ja 0x40ed56
movzx eax, al
mov dword [ebp - 0x424], eax
test edx, 0x20000000
mov ecx, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
mov eax, str.0123456789abcdefghijklmnopqrstuvwxyz_________._:_________
cmovne eax, ecx
xor edi, edi
mov dword [ebp - 0x450], eax
lea ecx, [ebp - 0x16]
test esi, esi
je 0x40ee16
lea esp, [esp]
test edx, 0x10000
je 0x40edec
xor eax, eax
mov dword [ebp - 0x448], eax
mov eax, esi
xor edx, edx
div dword [ebp - 0x424]
inc edi
mov esi, eax
mov dword [ebp - 0x430], edi
mov eax, dword [ebp - 0x450]
movsx ax, byte [eax + edx]
mov word [ecx], ax
sub ecx, 2
mov eax, dword [ebp - 0x448]
inc eax
mov dword [ebp - 0x448], eax
cmp eax, 3
jne 0x40ede6
test esi, esi
je 0x40ee2d
mov ax, word [ebp - 0x426]
inc edi
mov word [ecx], ax
sub ecx, 2
xor eax, eax
mov dword [ebp - 0x430], edi
mov dword [ebp - 0x448], eax
test esi, esi
jne 0x40ed90
jmp 0x40ee2d
mov ebx, dword [ebp - 0x450]
mov eax, esi
xor edx, edx
div dword [ebp - 0x424]
inc edi
mov esi, eax
movsx ax, byte [ebx + edx]
mov word [ecx], ax
sub ecx, 2
test esi, esi
jne 0x40edf2
mov ebx, dword [ebp - 0x42c]
jmp 0x40ee27
mov eax, 0x30
lea ecx, [ebp - 0x18]
mov word [ebp - 0x16], ax
mov edi, 1
mov dword [ebp - 0x430], edi
mov esi, dword [ebp - 0x438]
xor edx, edx
cmp dword [ebp - 0x420], edx
je 0x40ee44
mov edx, 1
jmp 0x40ee52
test esi, 0x20000
mov eax, 1
cmovne edx, eax
mov eax, esi
mov dword [ebp - 0x448], edx
and eax, 0x50000
cmp eax, 0x40000
jne 0x40ee97
mov eax, dword [ebp - 0x43c]
movzx esi, word [eax + 6]
lea eax, [edx + edi]
cmp eax, esi
jae 0x40ee91
or dword [ebp - 0x420], 4
sub esi, edx
sub esi, edi
add edx, esi
mov dword [ebp - 0x46c], esi
mov dword [ebp - 0x448], edx
mov esi, dword [ebp - 0x438]
add ecx, 2
cmp byte [ebp - 0x415], 0
mov dword [ebp - 0x434], ecx
jne 0x40ef50
lea eax, ds:[edx + edi]
mov edx, dword [ebp - 0x41c]
lea eax, [edx + eax*2]
cmp eax, 0x208
jbe 0x40eee6
mov eax, dword [ebp - 0x448]
add eax, edi
mov byte [ebp - 0x415], 1
mov edi, edx
lea edi, [edi + eax*2]
mov dword [ebp - 0x41c], edi
jmp 0x40fb4e
mov eax, dword [ebp - 0x420]
test al, 1
je 0x40eef7
mov edx, 0x2d
jmp 0x40ef04
test esi, 0x20000
je 0x40ef0a
mov edx, 0x2b
mov word [ebx], dx
add ebx, 2
test al, 4
je 0x40ef39
mov edx, dword [ebp - 0x46c]
test edx, edx
je 0x40ef36
mov ecx, edx
mov eax, 0x300030
shr ecx, 1
mov edi, ebx
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov ecx, dword [ebp - 0x434]
mov edi, dword [ebp - 0x430]
lea ebx, [ebx + edx*2]
lea esi, ds:[edi + edi]
push esi
push ecx
push ebx
call fcn.00415e30
add esp, 0xc
add ebx, esi
mov dword [ebp - 0x42c], ebx
mov eax, dword [ebp - 0x448]
add eax, edi
mov edi, dword [ebp - 0x41c]
lea edi, [edi + eax*2]
mov dword [ebp - 0x41c], edi
jmp 0x40fb4e
mov ecx, dword ds:[esi + 0x10]
fstp st(1)
mov esi, dword [esi + 0x14]
fstp st(0)
mov dword [ebp - 0x448], ecx
test esi, esi
jg 0x40efad
jl 0x40ef8a
test ecx, ecx
jae 0x40efad
neg ecx
mov dword [ebp - 0x420], 1
adc esi, 0
neg esi
jmp 0x40efa7
mov ecx, dword [esi + 0x10]
fstp st(1)
mov esi, dword [esi + 0x14]
fstp st(0)
mov dword [ebp - 0x448], ecx
mov edi, dword [ebp - 0x438]
mov edx, 0xa
mov dword [ebp - 0x424], edx
mov dword [ebp - 0x430], 0
test edi, 0x100
je 0x40f016
mov eax, dword [ebp - 0x43c]
mov dword [ebp - 0x424], edx
mov dword [ebp - 0x430], 0
mov al, byte [eax + 0xa]
cmp al, 2
jb 0x40f016
mov dword ds:[ebp - 0x424], edx
mov dword [ebp - 0x430], 0
cmp al, 0x45
ja 0x40f016
movzx eax, al
cdq
mov dword [ebp - 0x430], edx
mov edx, eax
mov dword [ebp - 0x424], eax
test edi, 0x20000000
mov eax, str.0123456789abcdefghijklmnopqrstuvwxyz_________._:_________
mov edi, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
cmovne eax, edi
lea edi, [ebp - 0x16]
mov dword [ebp - 0x434], eax
xor eax, eax
mov dword [ebp - 0x440], eax
mov eax, ecx
or eax, esi
je 0x40f146
test dword [ebp - 0x438], 0x10000
mov ebx, dword [ebp - 0x448]
je 0x40f100
xor eax, eax
mov dword [ebp - 0x450], eax
push ebx
push dword [ebp - 0x430]
push edx
push esi
push ebx
call fcn.004295e0
mov dword [ebp - 0x448], ebx
pop ebx
mov ebx, eax
mov esi, edx
mov eax, dword [ebp - 0x434]
mov edx, dword [ebp - 0x450]
inc edx
mov dword [ebp - 0x450], edx
movsx cx, byte [eax + ecx]
mov word [edi], cx
sub edi, 2
mov ecx, dword [ebp - 0x440]
inc ecx
mov dword [ebp - 0x440], ecx
cmp edx, 3
jne 0x40f0d0
mov eax, ebx
or eax, esi
je 0x40f0dc
mov ax, word [ebp - 0x426]
inc ecx
mov word [edi], ax
sub edi, 2
xor eax, eax
mov dword [ebp - 0x440], ecx
mov dword [ebp - 0x450], eax
mov edx, dword [ebp - 0x424]
mov eax, ebx
or eax, esi
jne 0x40f064
mov ebx, dword [ebp - 0x42c]
mov esi, dword [ebp - 0x438]
xor edx, edx
cmp dword [ebp - 0x420], edx
je 0x40f15f
mov edx, 1
jmp 0x40f16d
push ebx
push dword [ebp - 0x430]
push edx
push esi
push ebx
call fcn.004295e0
mov dword [ebp - 0x450], ebx
pop ebx
mov ebx, eax
mov esi, edx
mov eax, dword [ebp - 0x434]
mov edx, dword [ebp - 0x424]
movsx ax, byte [eax + ecx]
mov ecx, dword [ebp - 0x440]
inc ecx
mov dword [ebp - 0x440], ecx
mov word [edi], ax
mov eax, ebx
sub edi, 2
or eax, esi
jne 0x40f100
jmp 0x40f0dc
mov eax, 0x30
lea edi, [ebp - 0x18]
mov ecx, 1
mov word [ebp - 0x16], ax
mov dword [ebp - 0x440], ecx
jmp 0x40f0e2
test esi, 0x20000
mov eax, 1
cmovne edx, eax
mov eax, esi
mov dword [ebp - 0x450], edx
and eax, 0x50000
cmp eax, 0x40000
jne 0x40f1b7
mov eax, dword [ebp - 0x43c]
movzx esi, word [eax + 6]
lea eax, [edx + ecx]
cmp eax, esi
jae 0x40f1b1
or dword [ebp - 0x420], 4
sub esi, edx
sub esi, ecx
add edx, esi
mov dword [ebp - 0x470], esi
mov dword [ebp - 0x450], edx
mov esi, dword [ebp - 0x438]
add edi, 2
cmp byte [ebp - 0x415], 0
mov dword [ebp - 0x434], edi
jne 0x40f27b
lea eax, ds:[edx + ecx]
mov edx, dword [ebp - 0x41c]
lea eax, [edx + eax*2]
cmp eax, 0x208
jbe 0x40f20a
mov eax, dword [ebp - 0x440]
mov edi, edx
add eax, dword [ebp - 0x450]
mov byte [ebp - 0x415], 1
lea edi, [edi + eax*2]
mov dword [ebp - 0x41c], edi
jmp 0x40fb4e
mov eax, dword [ebp - 0x420]
test al, 1
je 0x40f21b
mov edx, 0x2d
jmp 0x40f22d
jmp 0x40f220
test esi, 0x20000
je 0x40f233
mov edx, 0x2b
mov word [ebx], dx
add ebx, 2
test al, 4
je 0x40f265
mov edx, dword ds:[ebp - 0x470]
test edx, edx
je 0x40f262
mov ecx, edx
mov eax, 0x300030
shr ecx, 1
mov edi, ebx
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [ebp - 0x434]
mov ecx, dword [ebp - 0x440]
lea ebx, [ebx + edx*2]
lea esi, [ecx + ecx]
push esi
push edi
push ebx
call fcn.00415e30
add esp, 0xc
add ebx, esi
mov dword [ebp - 0x42c], ebx
mov eax, dword [ebp - 0x440]
mov edi, dword [ebp - 0x41c]
add eax, dword [ebp - 0x450]
lea edi, [edi + eax*2]
mov dword [ebp - 0x41c], edi
jmp 0x40fb4e
mov dword [ebp - 0x420], 0
fstp st(1)
fstp st(0)
test dl, 0x40
je 0x40f2c2
movzx edx, word [esi + 4]
cmp edx, 0xa2
jbe 0x40f2c7
mov edx, 0xa2
jmp 0x40f2c7
mov edx, 6
fld qword [esi + 0x10]
lea ecx, [ebp - 0x413]
mov esi, dword [ebp - 0x438]
sub esp, 0x10
mov eax, ecx
mov dword [ebp - 0x448], ecx
mov ecx, esi
fstp qword [esp + 8]
push eax
call fcn.00412980
test al, al
jne 0x40f2f9
mov byte [ebp - 0x413], al
jmp 0x40f354
mov edx, dword [0x453da8]
nop
test edx, edx
je 0x40f32d
mov al, byte [ebp - 0x413]
lea ecx, [ebp - 0x413]
test al, al
je 0x40f32d
cmp al, 0x2e
je 0x40f326
mov al, byte ds:[ecx + 1]
inc ecx
test al, al
jne 0x40f314
jmp 0x40f32d
mov al, byte [0x452bc8]
mov byte [ecx], al
test esi, 0x20000000
je 0x40f354
lea eax, [ebp - 0x413]
test edx, edx
je 0x40f34b
push edx
push eax
call fcn.0041883d
add esp, 8
jmp 0x40f354
push eax
call fcn.004187e1
add esp, 4
mov eax, dword ds:[ebp - 0x43c]
mov edi, dword [eax]
test edi, 0x8000
je 0x40f3de
mov al, byte [ebp - 0x413]
lea ecx, [ebp - 0x413]
mov ah, byte [0x452bc8]
test al, al
je 0x40f38c
mov edi, edi
cmp al, ah
je 0x40f38c
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x40f380
mov al, byte [ecx]
inc ecx
test al, al
je 0x40f3de
mov al, byte [ecx]
test al, al
je 0x40f3b0
lea esp, [esp]
cmp al, 0x65
je 0x40f3b0
cmp al, 0x45
je 0x40f3b0
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x40f3a0
mov al, byte [ecx - 1]
mov esi, ecx
dec ecx
cmp al, 0x30
jne 0x40f3c8
lea ebx, [ebx]
mov al, byte [ecx - 1]
dec ecx
cmp al, 0x30
je 0x40f3c0
cmp al, ah
lea edx, [ecx - 1]
cmovne edx, ecx
mov al, byte [esi]
lea edx, [edx + 1]
mov byte [edx], al
lea esi, [esi + 1]
test al, al
jne 0x40f3d0
lea esi, [ebp - 0x413]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x40f3e7
sub esi, ecx
cmp byte [ebp - 0x413], 0x2d
mov dword [ebp - 0x434], esi
jne 0x40f419
lea ecx, [ebp - 0x412]
dec esi
mov edx, 1
mov dword [ebp - 0x448], ecx
mov dword [ebp - 0x434], esi
jmp 0x40f433
mov edx, dword [ebp - 0x420]
test edi, 0x20000
mov ecx, dword [ebp - 0x448]
mov eax, 2
cmovne edx, eax
mov eax, edi
mov dword [ebp - 0x420], edx
and eax, 0x13000
cmp eax, 0x10000
jne 0x40f5d3
mov al, byte [ecx]
mov edi, ecx
sub al, 0x30
mov dword [ebp - 0x450], ecx
cmp al, 0xa
jae 0x40f470
jmp 0x40f460
mov al, byte [edi + 1]
inc edi
sub al, 0x30
cmp al, 0xa
jb 0x40f460
mov dword [ebp - 0x450], edi
mov edx, edi
sub edx, ecx
mov dword [ebp - 0x424], edx
je 0x40f493
lea ecx, [edx + 2]
mov eax, 0xaaaaaaab
mul ecx
mov eax, edx
mov edx, dword [ebp - 0x424]
shr eax, 1
dec eax
jmp 0x40f495
xor eax, eax
mov dword [ebp - 0x430], eax
add eax, esi
add eax, eax
cmp dword [ebp - 0x420], 0
lea ecx, [eax + 2]
cmove ecx, eax
cmp byte [ebp - 0x415], 0
mov ax, word [0x452c08]
mov word [ebp - 0x426], ax
jne 0x40f4dd
mov eax, dword [ebp - 0x41c]
add eax, ecx
cmp eax, 0x208
jbe 0x40f4dd
mov byte [ebp - 0x415], 1
jmp 0x40f569
mov ecx, edx
lea eax, [edx + 2]
xor edx, edx
div dword [ebp - 0x474]
cmp byte [ebp - 0x415], 0
jne 0x40f569
mov eax, dword [ebp - 0x420]
test al, 1
je 0x40f504
mov eax, 0x2d
jmp 0x40f50d
test al, 2
je 0x40f519
mov eax, 0x2b
mov word [ebx], ax
add ebx, 2
mov dword [ebp - 0x42c], ebx
mov eax, dword ds:[ebp - 0x424]
test eax, eax
je 0x40f56f
mov esi, dword [ebp - 0x448]
mov di, word [ebp - 0x426]
movsx ax, byte [esi]
lea esi, [esi + 1]
dec ecx
mov word [ebx], ax
mov eax, edx
add ebx, 2
dec edx
test eax, eax
jne 0x40f553
test ecx, ecx
je 0x40f557
mov word [ebx], di
lea edx, [eax + 2]
add ebx, 2
test ecx, ecx
jne 0x40f531
mov esi, dword [ebp - 0x434]
mov edi, dword [ebp - 0x450]
mov dword [ebp - 0x42c], ebx
mov eax, dword [ebp - 0x424]
cmp dword [ebp - 0x420], 0
mov edx, dword [ebp - 0x41c]
je 0x40f581
add edx, 2
add eax, dword ds:[ebp - 0x430]
sub esi, dword [ebp - 0x424]
cmp byte [ebp - 0x415], 0
lea edx, [edx + eax*2]
mov dword [ebp - 0x41c], edx
jne 0x40fb42
push ebx
mov edx, esi
mov ecx, edi
call fcn.0040aa40
mov edi, dword [ebp - 0x41c]
lea ecx, [esi + esi]
mov eax, ecx
shr eax, 1
add edi, ecx
mov dword [ebp - 0x41c], edi
lea ebx, [ebx + eax*2]
mov dword [ebp - 0x42c], ebx
jmp 0x40fb4e
xor ecx, ecx
test edx, edx
setne cl
mov edx, ecx
test edi, 0x40000
je 0x40f60f
mov eax, dword [ebp - 0x43c]
movzx edi, word [eax + 6]
lea eax, [ecx + esi]
cmp eax, edi
jae 0x40f60f
or dword [ebp - 0x420], 4
mov eax, edi
sub eax, ecx
sub eax, esi
mov dword [ebp - 0x464], eax
lea edx, [ecx + eax]
mov cl, byte ds:[ebp - 0x415]
mov edi, dword [ebp - 0x41c]
test cl, cl
jne 0x40f6cb
lea eax, [edx + esi]
lea eax, [edi + eax*2]
cmp eax, 0x208
jbe 0x40f657
mov ax, word [0x452c08]
lea edi, [edi + edx*2]
mov byte [ebp - 0x415], 1
mov dword [ebp - 0x41c], edi
mov word [ebp - 0x426], ax
jmp 0x40fb4e
mov eax, dword ds:[ebp - 0x420]
test al, 1
je 0x40f66b
mov eax, 0x2d
jmp 0x40f674
test al, 2
je 0x40f686
mov eax, 0x2b
mov word [ebx], ax
add ebx, 2
mov eax, dword [ebp - 0x420]
mov dword [ebp - 0x42c], ebx
test al, 4
je 0x40f6cb
mov eax, dword [ebp - 0x464]
test eax, eax
je 0x40f6b2
mov ecx, eax
mov edi, ebx
shr ecx, 1
mov eax, 0x300030
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [ebp - 0x41c]
mov eax, dword [ebp - 0x464]
mov ecx, dword [ebp - 0x448]
lea ebx, [ebx + eax*2]
lea edi, [edi + edx*2]
mov edx, esi
push ebx
call fcn.0040aa40
jmp 0x40ec32
lea edi, [edi + edx*2]
mov dword [ebp - 0x41c], edi
test cl, cl
jne 0x40ec4a
mov ecx, dword [ebp - 0x448]
mov edx, esi
push ebx
call fcn.0040aa40
jmp 0x40ec32
mov ax, word [0x452c08]
mov edi, dword [ebp - 0x41c]
mov word [ebp - 0x426], ax
jmp 0x40fb4e
mov eax, dword [ebp - 0x43c]
xor edi, edi
mov esi, dword [esi + 0x10]
mov dword [ebp - 0x47c], esi
mov dword [ebp - 0x484], edi
mov edx, dword [eax + 0x14]
mov eax, edx
mov ecx, edx
mov dword [ebp - 0x430], edi
and eax, 0x7fffffff
and ecx, 0x80000000
or esi, edx
mov dword [ebp - 0x478], eax
fild qword [ebp - 0x47c]
mov dword [ebp - 0x480], ecx
fild qword [ebp - 0x484]
fchs
faddp st(1)
jne 0x40f7b2
cmp byte [ebp - 0x415], 0
fstp st(0)
mov edi, dword [ebp - 0x41c]
fstp st(1)
fstp st(0)
jne 0x40f79b
lea eax, [edi + 2]
cmp eax, 0x208
jbe 0x40f793
add ebx, 2
mov byte [ebp - 0x415], 1
add edi, 2
mov dword [ebp - 0x42c], ebx
mov dword [ebp - 0x41c], edi
jmp 0x40fb4e
mov eax, 0x30
mov word [ebx], ax
add ebx, 2
add edi, 2
mov dword [ebp - 0x42c], ebx
mov dword [ebp - 0x41c], edi
jmp 0x40fb4e
mov edx, dword ds:[ebp - 0x438]
mov esi, dword [ebp - 0x43c]
test edx, 0x100
je 0x40f7ce
movzx ecx, byte [esi + 0xa]
jmp 0x40f7d1
or ecx, 0xffffffff
fcomi st(2)
jb 0x40f7eb
cmp edi, 7
jae 0x40f7e5
cmp edi, ecx
jae 0x40f7e5
fmul st(1)
inc edi
fcomi st(2)
jae 0x40f7d5
mov dword [ebp - 0x430], edi
fstp st(2)
fstp st(0)
test dl, 0x40
je 0x40f7fa
movzx eax, word [esi + 4]
jmp 0x40f7ff
mov eax, 2
movzx edx, ax
mov ecx, 0x1804b
cmp edx, 0xa2
mov dword [ebp - 0x448], 0
mov eax, 0xa2
cmova edx, eax
sub esp, 0x10
lea eax, [ebp - 0x413]
mov dword [ebp - 0x450], eax
fstp qword [esp + 8]
push eax
call fcn.00412980
jmp 0x40f840
test al, al
jne 0x40f90a
xor ah, ah
mov byte [ebp - 0x413], ah
mov dx, word [0x452bc8]
lea ecx, ds:[ebp - 0x413]
test ah, ah
je 0x40f872
mov al, ah
cmp al, dl
je 0x40f872
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x40f866
mov al, byte [ecx]
inc ecx
test al, al
je 0x40f8ca
mov al, byte [ecx]
test al, al
je 0x40f890
nop
cmp al, 0x65
je 0x40f890
cmp al, 0x45
je 0x40f890
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x40f880
mov al, byte [ecx - 1]
mov esi, ecx
dec ecx
cmp al, 0x30
jne 0x40f8a8
lea ebx, [ebx]
mov al, byte [ecx - 1]
dec ecx
cmp al, 0x30
je 0x40f8a0
cmp al, byte [0x452bc8]
lea edx, [ecx - 1]
cmovne edx, ecx
mov al, byte ds:[esi]
lea edx, [edx + 1]
mov byte [edx], al
lea esi, [esi + 1]
test al, al
jne 0x40f8b4
mov ah, byte [ebp - 0x413]
lea esi, [ebp - 0x413]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x40f8d3
sub esi, ecx
mov dword [ebp - 0x434], esi
cmp ah, 0x2d
jne 0x40f959
lea ecx, [ebp - 0x412]
mov dword [ebp - 0x448], 1
dec esi
mov dword [ebp - 0x450], ecx
mov dword [ebp - 0x434], esi
jmp 0x40f95f
cmp dword [0x453da8], 0
mov ah, byte [ebp - 0x413]
je 0x40f850
lea ecx, [ebp - 0x413]
test ah, ah
je 0x40f850
mov al, ah
lea ecx, [ecx]
cmp al, 0x2e
je 0x40f945
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x40f930
lea esp, [esp]
jmp 0x40f850
mov dx, word [0x452bc8]
mov byte [ecx], dl
mov ah, byte [ebp - 0x413]
jmp 0x40f857
mov ecx, dword [ebp - 0x450]
mov al, byte [ecx]
mov edi, ecx
sub al, 0x30
mov dword [ebp - 0x440], ecx
cmp al, 0xa
jae 0x40f980
nop
mov al, byte [edi + 1]
inc edi
sub al, 0x30
cmp al, 0xa
jb 0x40f970
mov dword [ebp - 0x440], edi
mov edx, edi
sub edx, ecx
mov dword [ebp - 0x424], edx
je 0x40f9a3
lea ecx, [edx + 2]
mov eax, 0xaaaaaaab
mul ecx
mov eax, edx
mov edx, dword [ebp - 0x424]
shr eax, 1
dec eax
jmp 0x40f9a5
xor eax, eax
mov dword [ebp - 0x420], eax
add eax, esi
add eax, eax
cmp dword [ebp - 0x448], 0
lea ecx, [eax + 2]
cmove ecx, eax
cmp byte [ebp - 0x415], 0
mov ax, word [0x452c08]
mov word [ebp - 0x426], ax
jne 0x40f9f3
mov eax, dword ds:[ebp - 0x41c]
add eax, ecx
cmp eax, 0x208
jbe 0x40f9f3
mov byte [ebp - 0x415], 1
jmp 0x40fa6a
mov ecx, edx
lea eax, [edx + 2]
xor edx, edx
div dword [ebp - 0x474]
cmp byte [ebp - 0x415], 0
jne 0x40fa6a
cmp dword [ebp - 0x448], 0
je 0x40fa21
mov eax, 0x2d
mov word [ebx], ax
add ebx, 2
mov eax, dword [ebp - 0x424]
test eax, eax
je 0x40fa70
mov esi, dword [ebp - 0x450]
mov di, word [ebp - 0x426]
movsx ax, byte [esi]
lea esi, [esi + 1]
dec ecx
mov word [ebx], ax
mov eax, edx
add ebx, 2
dec edx
test eax, eax
jne 0x40fa5a
test ecx, ecx
je 0x40fa5e
mov word [ebx], di
lea edx, [eax + 2]
add ebx, 2
test ecx, ecx
jne 0x40fa38
mov esi, dword [ebp - 0x434]
mov edi, dword [ebp - 0x440]
mov eax, dword [ebp - 0x424]
cmp dword [ebp - 0x448], 0
je 0x40fa80
add dword [ebp - 0x41c], 2
add eax, dword [ebp - 0x420]
mov edx, dword [ebp - 0x41c]
sub esi, dword [ebp - 0x424]
cmp byte [ebp - 0x415], 0
lea edx, [edx + eax*2]
mov dword [ebp - 0x450], edx
jne 0x40fb1a
push ebx
mov edx, esi
mov ecx, edi
call fcn.0040aa40
mov edx, dword ds:[ebp - 0x450]
lea ecx, [esi + esi]
mov esi, dword [ebp - 0x430]
mov eax, ecx
shr eax, 1
add edx, ecx
mov dword [ebp - 0x450], edx
lea ebx, [ebx + eax*2]
mov eax, dword [esi*8 + 0x452bd0]
add eax, 2
add eax, edx
cmp eax, 0x208
jbe 0x40faf0
mov byte [ebp - 0x415], 1
jmp 0x40fb20
mov eax, 0x20
mov word [ebx], ax
lea eax, [ebx + 2]
push dword [esi*8 + 0x452bd0]
push dword [esi*8 + 0x452bd4]
push eax
call fcn.00415e30
mov edx, dword [ebp - 0x450]
add esp, 0xc
jmp 0x40fb20
mov esi, dword [ebp - 0x430]
mov ecx, dword [esi*8 + 0x452bd0]
lea eax, [ecx + 2]
shr eax, 1
lea edi, [ecx + 2]
add edi, edx
mov dword [ebp - 0x41c], edi
lea ebx, [ebx + eax*2]
mov dword [ebp - 0x42c], ebx
jmp 0x40fb4e
mov edi, dword [ebp - 0x41c]
jmp 0x40fb4e
fstp st(1)
fstp st(0)
mov eax, dword ds:[ebp - 0x43c]
mov ecx, edi
sub ecx, dword [ebp - 0xc]
mov edx, dword [eax]
test edx, 0xc0000000
je 0x40fc28
movzx esi, word [eax + 6]
add esi, esi
cmp ecx, esi
jae 0x40fc28
sub esi, ecx
cmp byte [ebp - 0x415], 0
jne 0x40fc13
lea eax, [esi + edi]
cmp eax, 0x208
jbe 0x40fb9f
mov byte [ebp - 0x415], 1
jmp 0x40fc13
nop
test dl, dl
jns 0x40fbb0
mov eax, dword [ebp - 0x43c]
movzx eax, word [eax + 8]
jmp 0x40fbb5
mov eax, 0x20
mov edi, esi
mov dword [ebp - 0x434], eax
shr edi, 1
test edx, edx
jns 0x40fbce
test edi, edi
je 0x40fc0d
mov ecx, edi
mov edi, ebx
jmp 0x40fbfa
mov eax, ecx
mov edx, ebx
and eax, 0xfffffffe
sub edx, eax
push ecx
push edx
lfence
lea eax, [edx + edi*2]
mov dword [ebp - 0xc], edx
push eax
call fcn.004158b0
add esp, 0xc
test edi, edi
je 0x40fc0d
mov eax, dword [ebp - 0x434]
mov ecx, edi
mov edi, dword [ebp - 0xc]
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [ebp - 0x41c]
mov eax, esi
shr eax, 1
add edi, esi
mov dword [ebp - 0x41c], edi
lea ebx, [ebx + eax*2]
mov dword [ebp - 0x42c], ebx
mov edx, dword [ebp - 0x458]
fld qword [ebp - 0x48c]
fld qword [ebp - 0x494]
mov eax, dword [ebp - 0x45c]
test edx, edx
jne 0x40eb0d
mov cl, byte [ebp - 0x415]
fstp st(1)
fstp st(0)
test cl, cl
jne 0x40fc69
lea eax, ds:[edi + 2]
cmp eax, 0x208
jbe 0x40fc90
mov cl, 1
mov eax, dword [ebp - 0x460]
test eax, eax
je 0x40fc78
xor edx, edx
mov word [eax], dx
test cl, cl
mov ecx, dword [ebp - 8]
pop edi
sete al
xor ecx, ebp
pop esi
pop ebx
call fcn.00413aae
mov esp, ebp
pop ebp
ret 0xc
xor eax, eax
mov word [ebx], ax
jmp 0x40fc78