Function at 0x4234e0
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5f0
push ebx
push esi
push edi
mov edi, 0x26
mov dword [ebp - 0x54], ecx
cmp dword [ebp + 8], edi
mov esi, edx
mov edx, dword [0x454e8c]
cmovae edi, dword [ebp + 8]
mov dword [ebp - 0x48], esi
mov dword [ebp - 0xc], edi
lea ecx, [edi + 0xa]
call fcn.00411890
mov ecx, eax
xor edx, edx
lea eax, [ecx + 8]
mov dword [ebp - 8], ecx
mov dword [ebp + 8], edx
mov dword [ecx + 4], eax
mov dword [ecx], edi
mov word [eax + edi], dx
test byte [0x453b58], 1
mov ebx, dword [ecx + 4]
mov dword [ebp - 0x20], ebx
jne 0x423640
mov eax, 0x453b58
lock bts dword [eax], 0x1f
jae 0x42355f
test byte [0x453b58], 1
jne 0x423640
mov ecx, eax
call fcn.00426b70
jmp 0x42363e
mov esi, dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
lea eax, [ebp - 0x64]
push 4
push eax
push 0xe
push 0x400
call esi
test eax, eax
je 0x42359a
mov ax, word [ebp - 0x64]
test ax, ax
je 0x42359a
movzx ecx, word [0x453b54]
cmp word [ebp - 0x62], 0
movzx eax, ax
cmove ecx, eax
mov word [0x453b54], cx
push 4
lea eax, [ebp - 0x64]
push eax
push 0xf
push 0x400
call esi
test eax, eax
je 0x4235cf
mov ax, word [ebp - 0x64]
test ax, ax
je 0x4235cf
movzx ecx, word [0x453b18]
cmp word [ebp - 0x62], 0
movzx eax, ax
cmove ecx, eax
mov word [0x453b18], cx
cmp word [0x453b54], 0x2e
je 0x4235ed
push 0x44f2da
push 0
call fcn.0042f7aa
add esp, 8
mov dword [0x454a6c], eax
mov eax, 0x453b58
lock bts dword [eax], 0
jb 0x42363b
mov esi, dword [0x453b5c]
test esi, esi
je 0x42360c
push 0
push esi
call dword [sym.imp.ntdll.dll_NtSetEvent]
mov eax, 0xfffffffe
mov ecx, 0x453b58
lock xadd dword [ecx], eax
shr eax, 1
and eax, 0x7fff
sub eax, 1
jne 0x42363b
test esi, esi
je 0x42363b
push esi
call dword [sym.imp.ntdll.dll_NtClose]
mov dword [0x453b5c], 0
mov esi, dword [ebp - 0x48]
xor edx, edx
fld qword [0x450690]
fld qword [0x450680]
mov dword [ebp - 0x5c], 3
mov eax, dword [ebp - 0x54]
dec esi
mov ecx, eax
mov dword [ebp - 0x48], esi
mov esi, eax
mov dword [ebp - 0x4c], edx
add eax, 0x18
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x14], 0
mov eax, dword [esi]
mov dword [ebp - 0x28], eax
and eax, 0x3f
cmp eax, 0xc
ja case.default.0x423682
jmp dword [eax*4 + 0x42465c]
mov eax, dword [ebp - 0xc]
lea edi, [edx + 2]
fstp st(1)
fstp st(0)
cmp eax, edi
jae 0x4236fa
mov edx, dword [0x454e8c]
add eax, eax
cmp eax, edi
mov ebx, edi
cmovae ebx, eax
mov dword [ebp - 0xc], ebx
lea ecx, [ebx + 0xa]
call fcn.00411890
mov esi, eax
xor ecx, ecx
lea eax, [esi + 8]
mov dword [esi + 4], eax
mov dword [esi], ebx
mov word [eax + ebx], cx
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
push ebx
push dword [eax + 4]
push dword [esi + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x4236ec
call fcn.00411970
mov eax, dword [esi + 4]
shr ebx, 1
mov dword [ebp - 8], esi
mov esi, dword [ebp - 0x24]
lea ebx, [eax + ebx*2]
mov ax, word [esi + 0x10]
mov edx, edi
mov word [ebx], ax
add ebx, 2
mov dword [ebp - 0x20], ebx
mov dword [ebp + 8], edx
jmp 0x4244fb
mov eax, dword [esi + 0x10]
fstp st(1)
fstp st(0)
lea ecx, [eax + edx]
cmp edi, ecx
jae 0x423785
mov edx, dword [0x454e8c]
lea eax, [edi + edi]
cmp eax, ecx
mov ebx, ecx
cmovae ebx, eax
mov dword [ebp - 0xc], ebx
lea ecx, [ebx + 0xa]
call fcn.00411890
mov edi, dword [ebp - 8]
mov esi, eax
lea eax, [esi + 8]
xor ecx, ecx
mov dword [esi], ebx
mov dword [esi + 4], eax
mov word [eax + ebx], cx
mov ebx, dword [ebp + 8]
push ebx
push dword [edi + 4]
push dword [esi + 4]
call fcn.00441e40
add esp, 0xc
lea ecx, [edi - 8]
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x423772
call fcn.00411970
mov eax, dword [esi + 4]
mov ecx, ebx
mov dword [ebp - 8], esi
mov esi, dword [ebp - 0x24]
shr ecx, 1
lea ebx, [eax + ecx*2]
mov eax, dword [esi + 0x10]
push eax
push dword [esi + 0x14]
push ebx
call fcn.00441e40
mov eax, dword [esi + 0x10]
add esp, 0xc
mov edx, dword [ebp + 8]
shr eax, 1
add edx, dword [esi + 0x10]
mov dword [ebp + 8], edx
lea ebx, [ebx + eax*2]
mov dword [ebp - 0x20], ebx
jmp 0x4244fb
mov ecx, dword [esi + 0x10]
fstp st(1)
fstp st(0)
call fcn.00411ec0
mov ecx, dword [ebp + 8]
lea esi, [eax + eax]
add ecx, esi
mov dword [ebp - 0x10], ecx
cmp edi, ecx
jae 0x423827
mov edx, dword [0x454e8c]
lea eax, [edi + edi]
cmp eax, ecx
mov ebx, ecx
cmovae ebx, eax
mov dword [ebp - 0xc], ebx
lea ecx, [ebx + 0xa]
call fcn.00411890
mov edi, eax
xor ecx, ecx
lea eax, [edi + 8]
mov dword [edi + 4], eax
mov dword [edi], ebx
mov word [eax + ebx], cx
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
push ebx
push dword [eax + 4]
push dword [edi + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x42381c
call fcn.00411970
mov eax, dword [edi + 4]
shr ebx, 1
mov dword [ebp - 8], edi
lea ebx, [eax + ebx*2]
mov ecx, dword [ebp - 0x24]
push esi
push dword [ecx + 0x10]
push ebx
call fcn.00441e40
mov edx, dword [ebp - 0x10]
add esp, 0xc
shr esi, 1
mov dword [ebp + 8], edx
lea ebx, [ebx + esi*2]
mov dword [ebp - 0x20], ebx
jmp 0x4244fb
cmp dword [ebp - 0x28], 3
fstp st(1)
fstp st(0)
jne 0x42385f
mov ecx, dword [esi + 0x14]
mov esi, dword [esi + 0x10]
mov dword [ebp - 0x30], ecx
jmp 0x423879
mov ecx, dword [esi + 0x10]
mov esi, ecx
mov dword [ebp - 0x30], ecx
lea edx, [esi + 1]
lea ebx, [ebx]
mov al, byte [esi]
inc esi
test al, al
jne 0x423870
sub esi, edx
push esi
push ecx
lea eax, [ebp - 0x50]
push eax
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeSize]
test eax, eax
js 0x424149
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x50]
add ecx, eax
cmp edi, ecx
jae 0x423902
mov edx, dword [0x454e8c]
lea eax, [edi + edi]
cmp eax, ecx
mov ebx, ecx
cmovae ebx, eax
mov dword [ebp - 0xc], ebx
lea ecx, [ebx + 0xa]
call fcn.00411890
mov edi, eax
xor ecx, ecx
lea eax, [edi + 8]
mov dword [edi + 4], eax
mov dword [edi], ebx
mov word [ebx + eax], cx
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
push ebx
push dword [eax + 4]
push dword [edi + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x4238ef
call fcn.00411970
mov eax, dword [edi + 4]
mov ecx, ebx
shr ecx, 1
mov dword [ebp - 8], edi
lea ebx, [eax + ecx*2]
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x20], ebx
push esi
push dword [ebp - 0x30]
push 0
push eax
push ebx
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeN]
test eax, eax
js 0x424149
mov eax, dword [ebp - 0x50]
mov edx, dword [ebp + 8]
shr eax, 1
add edx, dword [ebp - 0x50]
mov dword [ebp + 8], edx
lea ebx, [ebx + eax*2]
mov dword [ebp - 0x20], ebx
jmp 0x4244fb
mov eax, dword [ecx + 0x10]
mov ecx, eax
shr ecx, 0x1f
mov dword [ebp - 0x14], ecx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
jmp 0x423948
mov ecx, dword [esi + 0x10]
fstp st(1)
fstp st(0)
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x1c], 0xa
test edx, 0x100
je 0x42396f
mov al, byte [esi + 0xa]
cmp al, 2
jb 0x42396f
cmp al, 0x45
ja 0x42396f
movzx eax, al
mov dword [ebp - 0x1c], eax
test edx, 0x20000000
lea edi, [ebp - 0x8e]
mov esi, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
mov eax, str.0123456789abcdefghijklmnopqrstuvwxyz_________._:_________
cmovne eax, esi
xor esi, esi
mov dword [ebp - 0x30], eax
test ecx, ecx
je 0x423a0f
test edx, 0x10000
je 0x4239ef
xor eax, eax
mov dword [ebp - 0x40], eax
mov edi, edi
mov eax, ecx
xor edx, edx
div dword [ebp - 0x1c]
inc esi
mov ecx, eax
mov eax, dword [ebp - 0x30]
movsx ax, byte [eax + edx]
mov word [edi], ax
sub edi, 2
mov eax, dword [ebp - 0x40]
inc eax
mov dword [ebp - 0x40], eax
cmp eax, 3
jne 0x4239da
test ecx, ecx
je 0x4239de
mov ax, word [0x453b18]
inc esi
mov word [edi], ax
sub edi, 2
xor eax, eax
mov dword [ebp - 0x40], eax
test ecx, ecx
jne 0x4239a0
mov edx, dword [ebp - 0x28]
xor ecx, ecx
cmp dword [ebp - 0x14], ecx
je 0x423a26
mov ecx, 1
jmp 0x423a34
mov ebx, eax
mov eax, ecx
xor edx, edx
div dword [ebp - 0x1c]
inc esi
mov ecx, eax
movsx ax, byte [ebx + edx]
mov word [edi], ax
sub edi, 2
test ecx, ecx
jne 0x4239f1
mov ebx, dword [ebp - 0x20]
jmp 0x4239de
mov eax, 0x30
lea edi, [ebp - 0x90]
mov word [ebp - 0x8e], ax
lea esi, [eax - 0x2f]
jmp 0x4239e1
test edx, 0x20000
mov eax, 1
cmovne ecx, eax
and edx, 0x50000
cmp edx, 0x40000
jne 0x423a5f
mov eax, dword [ebp - 0x24]
movzx edx, word [eax + 6]
lea eax, [ecx + esi]
cmp eax, edx
jae 0x423a5f
or dword [ebp - 0x14], 4
mov eax, edx
sub eax, ecx
sub eax, esi
mov dword [ebp - 0x68], eax
add ecx, eax
lea eax, [ecx + esi]
add edi, 2
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x10], edi
lea ecx, [ecx + eax*2]
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x30], ecx
cmp eax, ecx
jae 0x423add
add eax, eax
mov edx, ecx
cmp eax, ecx
cmovae edx, eax
mov dword [ebp - 0xc], edx
lea ecx, [edx + 0xa]
mov edx, dword [0x454e8c]
call fcn.00411890
mov edx, dword [ebp - 0xc]
mov ebx, eax
push dword [ebp + 8]
lea eax, [ebx + 8]
xor ecx, ecx
mov dword [ebx + 4], eax
mov dword [ebx], edx
mov word [edx + eax], cx
mov eax, dword [ebp - 8]
push dword [eax + 4]
push dword [ebx + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x423acf
call fcn.00411970
mov ecx, dword [ebp + 8]
mov eax, dword [ebx + 4]
shr ecx, 1
mov dword [ebp - 8], ebx
lea ebx, [eax + ecx*2]
mov eax, dword [ebp - 0x14]
test al, 1
je 0x423aeb
mov ecx, 0x2d
jmp 0x423afb
mov ecx, dword [ebp - 0x24]
test dword [ecx], 0x20000
je 0x423b01
mov ecx, 0x2b
mov word [ebx], cx
add ebx, 2
test al, 4
je 0x423b24
mov edx, dword [ebp - 0x68]
test edx, edx
je 0x423b21
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 - 0x10]
lea ebx, [ebx + edx*2]
add esi, esi
push esi
push edi
push ebx
call fcn.00441e40
mov edx, dword [ebp - 0x30]
add esp, 0xc
add ebx, esi
mov dword [ebp + 8], edx
mov dword [ebp - 0x20], ebx
jmp 0x4244fb
mov ecx, dword [esi + 0x10]
fstp st(1)
mov esi, dword [esi + 0x14]
fstp st(0)
mov dword [ebp - 0x40], ecx
test esi, esi
jg 0x423b75
jl 0x423b58
test ecx, ecx
jae 0x423b75
neg ecx
mov dword [ebp - 0x14], 1
adc esi, 0
neg esi
jmp 0x423b72
mov ecx, dword [esi + 0x10]
fstp st(1)
mov esi, dword [esi + 0x14]
fstp st(0)
mov dword [ebp - 0x40], ecx
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x1c], 0xa
mov dword [ebp - 0x38], 0
test edx, 0x100
je 0x423bc5
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x1c], 0xa
mov dword [ebp - 0x38], 0
mov al, byte [eax + 0xa]
cmp al, 2
jb 0x423bc5
mov dword [ebp - 0x1c], 0xa
mov dword [ebp - 0x38], 0
cmp al, 0x45
ja 0x423bc5
movzx eax, al
cdq
mov dword [ebp - 0x38], edx
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x1c], eax
test edx, 0x20000000
mov dword [ebp - 0x18], 0
mov edi, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
mov eax, str.0123456789abcdefghijklmnopqrstuvwxyz_________._:_________
cmovne eax, edi
lea edi, [ebp - 0x8e]
mov dword [ebp - 0x10], eax
mov eax, ecx
or eax, esi
je 0x423ca3
mov ebx, dword [ebp - 0x40]
test edx, 0x10000
je 0x423c70
xor eax, eax
mov dword [ebp - 0x30], eax
push ebx
push dword [ebp - 0x38]
push dword [ebp - 0x1c]
push esi
push ebx
call fcn.00441ac0
mov dword [ebp - 0x40], ebx
pop ebx
mov ebx, eax
mov esi, edx
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
inc edx
mov dword [ebp - 0x18], edx
movsx ax, byte [eax + ecx]
mov ecx, dword [ebp - 0x30]
inc ecx
mov dword [ebp - 0x30], ecx
mov word [edi], ax
sub edi, 2
cmp ecx, 3
jne 0x423c54
mov eax, ebx
or eax, esi
je 0x423c5a
mov ax, word [0x453b18]
inc edx
mov word [edi], ax
sub edi, 2
xor eax, eax
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x30], eax
mov eax, ebx
or eax, esi
jne 0x423c02
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
xor ecx, ecx
cmp dword [ebp - 0x14], ecx
je 0x423cbf
mov ecx, 1
jmp 0x423ccc
push ebx
push dword [ebp - 0x38]
push dword [ebp - 0x1c]
push esi
push ebx
call fcn.00441ac0
mov dword [ebp - 0x30], ebx
pop ebx
mov ebx, eax
mov esi, edx
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
inc edx
mov dword [ebp - 0x18], edx
movsx ax, byte [eax + ecx]
mov word [edi], ax
mov eax, ebx
sub edi, 2
or eax, esi
jne 0x423c70
jmp 0x423c5a
mov eax, 0x30
lea edi, [ebp - 0x90]
mov edx, 1
mov word [ebp - 0x8e], ax
mov dword [ebp - 0x18], edx
jmp 0x423c5d
test eax, 0x20000
mov esi, 1
cmovne ecx, esi
and eax, 0x50000
cmp eax, 0x40000
jne 0x423cf5
mov eax, dword [ebp - 0x24]
movzx esi, word [eax + 6]
lea eax, [ecx + edx]
cmp eax, esi
jae 0x423cf5
or dword [ebp - 0x14], 4
mov eax, esi
sub eax, ecx
sub eax, edx
mov dword [ebp - 0x6c], eax
add ecx, eax
lea eax, [ecx + edx]
add edi, 2
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x10], edi
lea ecx, [ecx + eax*2]
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x30], ecx
cmp eax, ecx
jae 0x423d71
mov edx, dword [0x454e8c]
add eax, eax
cmp eax, ecx
mov ebx, ecx
cmovae ebx, eax
mov dword [ebp - 0xc], ebx
lea ecx, [ebx + 0xa]
call fcn.00411890
mov esi, eax
xor ecx, ecx
lea eax, [esi + 8]
mov dword [esi + 4], eax
mov dword [esi], ebx
mov word [ebx + eax], cx
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
push ebx
push dword [eax + 4]
push dword [esi + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x423d63
call fcn.00411970
mov eax, dword [esi + 4]
mov edx, dword [ebp - 0x18]
shr ebx, 1
mov dword [ebp - 8], esi
lea ebx, [eax + ebx*2]
mov eax, dword [ebp - 0x14]
test al, 1
je 0x423d7f
mov ecx, 0x2d
jmp 0x423d8f
mov ecx, dword [ebp - 0x24]
test dword [ecx], 0x20000
je 0x423d95
mov ecx, 0x2b
mov word [ebx], cx
add ebx, 2
test al, 4
je 0x423db8
mov esi, dword [ebp - 0x6c]
test esi, esi
je 0x423db5
mov ecx, esi
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 - 0x10]
lea ebx, [ebx + esi*2]
lea esi, [edx + edx]
push esi
push edi
push ebx
call fcn.00441e40
mov edx, dword [ebp - 0x30]
add esp, 0xc
add ebx, esi
mov dword [ebp + 8], edx
mov dword [ebp - 0x20], ebx
jmp 0x4244fb
mov edx, dword [ebp - 0x28]
fstp st(1)
mov dword [ebp - 0x14], 0
fstp st(0)
test dl, 0x40
je 0x423dfb
movzx eax, word [esi + 4]
cmp eax, 0xa2
jbe 0x423e00
mov eax, 0xa2
jmp 0x423e00
mov eax, 6
test edx, 0x1000
je 0x423e0f
mov ecx, 0x65
jmp 0x423e22
test edx, 0x2000
mov ecx, 0x66
mov edi, 0x61
cmovne ecx, edi
push dword [0x454a6c]
fld qword [esi + 0x10]
lea edi, [ebp - 0x48b]
push 0
push 0
push eax
test edx, 0x20000000
mov dword [ebp - 0x1c], edi
lea eax, [ecx - 0x20]
cmove eax, ecx
push eax
push 0x15e
lea eax, [ebp - 0x5ec]
push eax
push 0x3ff
mov eax, edi
push eax
lea eax, [ebp - 0x84]
push eax
fstp qword [ebp - 0x84]
call fcn.00430ddf
mov edx, dword [esi]
add esp, 0x28
test edx, 0x8000
je 0x423e82
mov ecx, edi
call fcn.00423460
mov edx, dword [esi]
lea esi, [ebp - 0x48b]
lea ecx, [esi + 1]
jmp 0x423e90
mov al, byte [esi]
inc esi
test al, al
jne 0x423e90
sub esi, ecx
cmp byte [ebp - 0x48b], 0x2d
mov dword [ebp - 0x10], esi
jne 0x423ebc
mov edi, 1
lea ecx, [ebp - 0x48a]
dec esi
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x10], esi
jmp 0x423ed6
test edx, 0x20000
je 0x423ed1
mov ecx, dword [ebp - 0x1c]
mov edi, 2
mov dword [ebp - 0x14], edi
jmp 0x423ed6
mov ecx, edi
mov edi, dword [ebp - 0x14]
mov eax, edx
and eax, 0x13000
cmp eax, 0x10000
jne 0x42404c
mov al, byte [ecx]
mov edi, ecx
sub al, 0x30
cmp al, 0xa
jae 0x423efc
mov al, byte [edi + 1]
inc edi
sub al, 0x30
cmp al, 0xa
jb 0x423ef2
mov eax, edi
sub eax, ecx
mov dword [ebp - 0x30], eax
lea edx, [eax + 2]
mov dword [ebp - 0x18], edx
je 0x423f1c
mov eax, 0xaaaaaaab
mul edx
mov eax, edx
mov edx, dword [ebp - 0x18]
shr eax, 1
dec eax
jmp 0x423f21
xor eax, eax
mov dword [ebp - 0x18], edx
lea ecx, [eax + esi]
mov dword [ebp - 0x40], eax
add ecx, ecx
cmp dword [ebp - 0x14], 0
lea eax, [ecx + 2]
cmove eax, ecx
mov ecx, dword [ebp + 8]
add ecx, eax
mov eax, dword [ebp - 0xc]
cmp eax, ecx
jae 0x423fa7
add eax, eax
mov dword [ebp - 0x18], edx
mov edx, dword [0x454e8c]
cmp eax, ecx
mov ebx, ecx
cmovae ebx, eax
mov dword [ebp - 0xc], ebx
lea ecx, [ebx + 0xa]
call fcn.00411890
mov edx, dword [ebp - 0xc]
mov ebx, eax
push dword [ebp + 8]
lea eax, [ebx + 8]
xor ecx, ecx
mov dword [ebx + 4], eax
mov dword [ebx], edx
mov word [edx + eax], cx
mov eax, dword [ebp - 8]
push dword [eax + 4]
push dword [ebx + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x423f99
call fcn.00411970
mov ecx, dword [ebp + 8]
mov eax, dword [ebx + 4]
shr ecx, 1
mov dword [ebp - 8], ebx
lea ebx, [eax + ecx*2]
mov edx, dword [ebp - 0x18]
mov eax, edx
mov ecx, dword [ebp - 0x30]
xor edx, edx
div dword [ebp - 0x5c]
mov eax, dword [ebp - 0x14]
test al, 1
je 0x423fc2
mov eax, 0x2d
jmp 0x423fcb
test al, 2
je 0x423fd1
mov eax, 0x2b
mov word [ebx], ax
add ebx, 2
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x424014
mov esi, dword [ebp - 0x1c]
jmp 0x423fe0
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 0x42400a
test ecx, ecx
je 0x42400e
mov ax, word [0x453b18]
mov edx, 2
mov word [ebx], ax
add ebx, 2
test ecx, ecx
jne 0x423fe0
mov esi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x30]
mov edx, esi
mov dword [ebp - 0x10], ebx
sub edx, eax
mov eax, dword [ebp + 8]
cmp dword [ebp - 0x14], 0
lea ecx, [eax + 2]
cmove ecx, eax
lea ebx, [ebx + edx*2]
mov eax, dword [ebp - 0x40]
add eax, esi
mov dword [ebp - 0x20], ebx
lea eax, [ecx + eax*2]
mov ecx, edi
mov dword [ebp + 8], eax
mov eax, dword [ebp - 0x10]
push eax
call fcn.00412960
mov edx, dword [ebp + 8]
jmp 0x4244fb
xor ecx, ecx
test edi, edi
setne cl
mov edi, ecx
test edx, 0x40000
je 0x42407b
mov eax, dword [ebp - 0x24]
movzx edx, word [eax + 6]
lea eax, [ecx + esi]
cmp eax, edx
jae 0x42407b
or dword [ebp - 0x14], 4
mov eax, edx
sub eax, ecx
sub eax, esi
mov dword [ebp - 0x58], eax
lea edi, [ecx + eax]
mov ecx, dword [ebp + 8]
lea eax, [edi + esi]
lea edx, [ecx + eax*2]
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x10], edx
cmp eax, edx
jae 0x4240f1
add eax, eax
mov ebx, edx
cmp eax, edx
mov edx, dword [0x454e8c]
cmovae ebx, eax
mov dword [ebp - 0xc], ebx
lea ecx, [ebx + 0xa]
call fcn.00411890
mov edi, eax
xor ecx, ecx
lea eax, [edi + 8]
mov dword [edi + 4], eax
mov dword [edi], ebx
mov word [ebx + eax], cx
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
push ebx
push dword [eax + 4]
push dword [edi + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x4240e3
call fcn.00411970
mov eax, dword [edi + 4]
mov edx, dword [ebp - 0x10]
shr ebx, 1
mov dword [ebp - 8], edi
lea ebx, [eax + ebx*2]
mov eax, dword [ebp - 0x14]
test al, 1
je 0x4240ff
mov ecx, 0x2d
jmp 0x424108
test al, 2
je 0x42410e
mov ecx, 0x2b
mov word [ebx], cx
add ebx, 2
test al, 4
je 0x424131
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x42412e
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 eax, dword [ebp - 0x58]
lea ebx, [ebx + eax*2]
mov edi, dword [ebp - 0x1c]
mov eax, ebx
mov dword [ebp + 8], edx
lea ebx, [ebx + esi*2]
mov edx, esi
mov dword [ebp - 0x20], ebx
push eax
mov ecx, edi
call fcn.00412960
mov edx, dword [ebp + 8]
jmp 0x4244fb
mov eax, dword [ebp - 0x24]
xor edi, edi
mov esi, dword [esi + 0x10]
mov dword [ebp - 0x74], esi
mov dword [ebp - 0x7c], edi
mov edx, dword [eax + 0x14]
mov eax, edx
mov ecx, edx
and eax, 0x7fffffff
and ecx, 0x80000000
mov dword [ebp - 0x70], eax
or esi, edx
mov dword [ebp - 0x78], ecx
fild qword [ebp - 0x74]
fild qword [ebp - 0x7c]
fchs
faddp st(1)
jne 0x424214
mov edi, dword [ebp + 8]
fstp st(0)
mov eax, dword [ebp - 0xc]
add edi, 2
fstp st(1)
fstp st(0)
cmp eax, edi
jae 0x4241fc
mov edx, dword [0x454e8c]
add eax, eax
cmp eax, edi
mov ebx, edi
cmovae ebx, eax
mov dword [ebp - 0xc], ebx
lea ecx, [ebx + 0xa]
call fcn.00411890
mov esi, eax
xor ecx, ecx
lea eax, [esi + 8]
mov dword [esi + 4], eax
mov dword [esi], ebx
mov word [eax + ebx], cx
mov eax, dword [ebp - 8]
mov ebx, dword [ebp + 8]
push ebx
push dword [eax + 4]
push dword [esi + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x4241f1
call fcn.00411970
mov eax, dword [esi + 4]
shr ebx, 1
mov dword [ebp - 8], esi
lea ebx, [eax + ebx*2]
mov eax, 0x30
mov edx, edi
mov word [ebx], ax
add ebx, 2
mov dword [ebp - 0x20], ebx
mov dword [ebp + 8], edx
jmp 0x4244fb
mov edx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x24]
test edx, 0x100
je 0x424228
movzx ecx, byte [esi + 0xa]
jmp 0x42422e
mov ecx, dword [0x453dc8]
fcomi st(2)
jb 0x424242
cmp edi, 7
jae 0x424242
cmp edi, ecx
jae 0x424242
fmul st(1)
inc edi
fcomi st(2)
jae 0x424232
fstp st(2)
fstp st(0)
test dl, 0x40
je 0x424251
movzx eax, word [esi + 4]
jmp 0x424256
mov eax, 2
push dword [0x454a6c]
movzx eax, ax
mov ecx, 0xa2
push 0
cmp eax, 0xa2
mov dword [ebp - 0x40], 0
push 0
cmova eax, ecx
lea ecx, [ebp - 0x48b]
push eax
push 0x66
push 0x15e
lea eax, [ebp - 0x5ec]
mov dword [ebp - 0x30], ecx
push eax
mov eax, ecx
push 0x3ff
push eax
lea eax, [ebp - 0x8c]
push eax
fstp qword [ebp - 0x8c]
call fcn.00430ddf
add esp, 0x28
lea ecx, [ebp - 0x48b]
call fcn.00423460
lea esi, [ebp - 0x48b]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x4242c0
sub esi, ecx
cmp byte [ebp - 0x48b], 0x2d
mov dword [ebp - 0x38], esi
jne 0x4242eb
lea edx, [ebp - 0x48a]
mov dword [ebp - 0x40], 1
dec esi
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x38], esi
jmp 0x4242ee
mov edx, dword [ebp - 0x30]
mov al, byte [edx]
mov ecx, edx
sub al, 0x30
mov dword [ebp - 0x10], edx
cmp al, 0xa
jae 0x42430d
jmp 0x424300
mov al, byte [ecx + 1]
inc ecx
sub al, 0x30
cmp al, 0xa
jb 0x424300
mov dword [ebp - 0x10], ecx
mov eax, ecx
sub eax, edx
mov dword [ebp - 0x1c], eax
lea edx, [eax + 2]
mov dword [ebp - 0x18], edx
je 0x42432d
mov eax, 0xaaaaaaab
mul edx
mov eax, edx
mov edx, dword [ebp - 0x18]
shr eax, 1
dec eax
jmp 0x424332
xor eax, eax
mov dword [ebp - 0x18], edx
lea ecx, [eax + esi]
mov dword [ebp - 0x14], eax
add ecx, ecx
cmp dword [ebp - 0x40], 0
lea eax, [ecx + 2]
cmove eax, ecx
mov ecx, dword [ebp + 8]
add ecx, eax
mov eax, dword [ebp - 0xc]
cmp eax, ecx
jae 0x4243b8
add eax, eax
mov dword [ebp - 0x18], edx
mov edx, dword [0x454e8c]
cmp eax, ecx
mov ebx, ecx
cmovae ebx, eax
mov dword [ebp - 0xc], ebx
lea ecx, [ebx + 0xa]
call fcn.00411890
mov ecx, dword [ebp - 0xc]
mov ebx, eax
push dword [ebp + 8]
lea eax, [ebx + 8]
xor edx, edx
mov dword [ebx + 4], eax
mov dword [ebx], ecx
mov word [ecx + eax], dx
mov eax, dword [ebp - 8]
push dword [eax + 4]
push dword [ebx + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x4243aa
call fcn.00411970
mov ecx, dword [ebp + 8]
mov eax, dword [ebx + 4]
shr ecx, 1
mov dword [ebp - 8], ebx
lea ebx, [eax + ecx*2]
mov edx, dword [ebp - 0x18]
mov eax, edx
mov ecx, dword [ebp - 0x1c]
xor edx, edx
div dword [ebp - 0x5c]
cmp dword [ebp - 0x40], 0
je 0x4243d6
mov eax, 0x2d
mov word [ebx], ax
add ebx, 2
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x424414
mov esi, dword [ebp - 0x30]
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 0x42440a
test ecx, ecx
je 0x42440e
mov ax, word [0x453b18]
mov edx, 2
mov word [ebx], ax
add ebx, 2
test ecx, ecx
jne 0x4243e0
mov esi, dword [ebp - 0x38]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x10]
sub esi, eax
push ebx
mov edx, esi
call fcn.00412960
mov eax, dword [ebp + 8]
lea esi, [ebx + esi*2]
cmp dword [ebp - 0x40], 0
mov edx, dword [ebp - 0xc]
lea ecx, [eax + 2]
cmove ecx, eax
mov eax, dword [ebp - 0x38]
add eax, dword [ebp - 0x14]
lea ebx, [ecx + eax*2]
mov ecx, dword [edi*8 + 0x453b1c]
lea eax, [ebx + 2]
mov dword [ebp + 8], ebx
add eax, ecx
cmp edx, eax
jae 0x4244b6
add ecx, 2
lea eax, [edx + edx]
mov edx, dword [0x454e8c]
add ecx, ebx
cmp eax, ecx
cmovae ecx, eax
mov dword [ebp - 0xc], ecx
add ecx, 0xa
call fcn.00411890
mov ecx, dword [ebp - 0xc]
mov esi, eax
lea eax, [esi + 8]
xor edx, edx
push ebx
mov dword [esi + 4], eax
mov dword [esi], ecx
mov word [eax + ecx], dx
mov eax, dword [ebp - 8]
push dword [eax + 4]
push dword [esi + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x4244a9
call fcn.00411970
mov eax, dword [esi + 4]
mov ecx, ebx
shr ecx, 1
mov dword [ebp - 8], esi
lea esi, [eax + ecx*2]
mov eax, 0x20
mov word [esi], ax
lea eax, [esi + 2]
push dword [edi*8 + 0x453b1c]
push dword [edi*8 + 0x453b20]
push eax
call fcn.00441e40
mov ecx, dword [edi*8 + 0x453b1c]
add esp, 0xc
mov edx, dword [ebp + 8]
add edx, 2
lea eax, [ecx + 2]
shr eax, 1
add edx, ecx
mov dword [ebp + 8], edx
lea ebx, [esi + eax*2]
mov dword [ebp - 0x20], ebx
jmp 0x4244fb
fstp st(1)
fstp st(0)
mov ecx, dword [ebp - 0x24]
mov edi, edx
sub edi, dword [ebp - 0x4c]
mov eax, dword [ecx]
test eax, 0xc0000000
je 0x424622
movzx esi, word [ecx + 6]
add esi, esi
cmp edi, esi
jae 0x424622
sub esi, edi
lea ecx, [esi + edx]
mov edx, dword [ebp - 0xc]
mov dword [ebp - 0x30], ecx
cmp edx, ecx
jae 0x42459a
lea eax, [edx + edx]
mov edx, ecx
cmp eax, ecx
cmovae edx, eax
mov dword [ebp - 0xc], edx
lea ecx, [edx + 0xa]
mov edx, dword [0x454e8c]
call fcn.00411890
mov ecx, dword [ebp - 0xc]
mov ebx, eax
push dword [ebp + 8]
lea eax, [ebx + 8]
xor edx, edx
mov dword [ebx + 4], eax
mov dword [ebx], ecx
mov word [eax + ecx], dx
mov eax, dword [ebp - 8]
push dword [eax + 4]
push dword [ebx + 4]
call fcn.00441e40
mov ecx, dword [ebp - 8]
add esp, 0xc
add ecx, 0xfffffff8
or eax, 0xffffffff
lock xadd dword [ecx + 4], eax
dec eax
jne 0x424585
call fcn.00411970
mov ecx, dword [ebp + 8]
mov eax, dword [ebx + 4]
shr ecx, 1
mov dword [ebp - 8], ebx
lea ebx, [eax + ecx*2]
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx]
jmp 0x42459d
mov ecx, dword [ebp - 0x24]
test al, al
jns 0x4245a7
movzx edx, word [ecx + 8]
jmp 0x4245ac
mov edx, 0x20
shr esi, 1
mov dword [ebp + 8], edx
test eax, eax
jns 0x4245d6
test esi, esi
je 0x4245d2
mov eax, edx
mov ecx, esi
movzx edx, ax
mov edi, ebx
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
add esi, esi
jmp 0x424617
mov eax, edi
mov ecx, ebx
and eax, 0xfffffffe
sub ecx, eax
lea eax, [esi + esi]
push edi
mov dword [ebp - 0x10], eax
add eax, ecx
push ecx
push eax
mov dword [ebp - 0x4c], ecx
call fcn.0042aab0
add esp, 0xc
test esi, esi
je 0x424614
mov eax, dword [ebp + 8]
mov ecx, esi
mov edi, dword [ebp - 0x4c]
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 esi, dword [ebp - 0x10]
mov edx, dword [ebp - 0x30]
add ebx, esi
mov dword [ebp - 0x20], ebx
mov dword [ebp + 8], edx
mov esi, dword [ebp - 0x48]
fld qword [0x450690]
fld qword [0x450680]
mov edi, dword [ebp - 0xc]
test esi, esi
jne 0x423653
mov eax, dword [ebp - 8]
fstp st(1)
pop edi
fstp st(0)
mov ecx, dword [eax + 4]
mov dword [eax], edx
shr edx, 1
xor esi, esi
mov word [ecx + edx*2], si
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4