Function at 0x412f20
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x490
mov eax, dword [0x676300]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
push edi
mov dword [ebp - 0x464], eax
mov dword [ebp - 0x460], 3
cmp esi, 0x26
jae 0x412f55
mov esi, 0x26
mov eax, dword [0x682b2c]
lea ebx, [esi + 0xa]
mov ecx, ebx
mov edi, eax
call fcn.004124f0
lea ecx, [edi + 0x10]
mov edx, 1
lock xadd dword [ecx], edx
mov dword [eax + 0xc], edi
mov dword [eax], 1
mov dword [eax + 8], ebx
add eax, 0x10
lea ecx, [eax + 8]
mov dword [eax], esi
mov dword [eax + 4], ecx
xor edx, edx
mov word [esi + ecx], dx
mov dword [ebp - 0x428], eax
mov eax, dword [eax + 4]
xor edi, edi
cmp dword [0x678694], 1
mov dword [ebp - 0x42c], esi
mov dword [ebp - 0x424], eax
mov dword [ebp - 0x430], edi
je 0x4130a3
mov ecx, 2
mov edx, 0x678694
xor eax, eax
lock cmpxchg dword [edx], ecx
sub eax, edi
je 0x412fe3
dec eax
je 0x4130a3
mov eax, 0x678698
call fcn.00412670
jmp 0x4130a3
mov esi, dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
push 4
lea eax, [ebp - 0x10]
push eax
push 0xe
push 0x400
call esi
test eax, eax
je 0x413011
mov ax, word [ebp - 0x10]
cmp ax, di
je 0x413011
cmp word [ebp - 0xe], di
jne 0x413011
mov word [0x6786a0], ax
push 4
lea ecx, [ebp - 0x10]
push ecx
push 0xf
push 0x400
call esi
test eax, eax
je 0x413039
mov ax, word [ebp - 0x10]
cmp ax, di
je 0x413039
cmp word [ebp - 0xe], di
jne 0x413039
mov word [0x6786a4], ax
cmp word [0x6786a0], 0x2e
je 0x413056
push 0x65c915
push edi
call fcn.0053fd58
add esp, 8
mov dword [0x68176c], eax
mov dword [0x678694], 1
mov edx, 0x678698
lock bts dword [edx], 0
jb 0x4130a3
mov eax, dword [0x67869c]
mov esi, eax
cmp eax, edi
je 0x41307f
push edi
push eax
call dword [sym.imp.ntdll.dll_NtSetEvent]
mov eax, 0xfffffffe
mov ecx, 0x678698
lock xadd dword [ecx], eax
shr eax, 1
dec eax
jne 0x4130a3
cmp esi, edi
je 0x4130a3
push esi
call dword [sym.imp.ntdll.dll_NtClose]
mov dword [0x67869c], edi
mov ebx, dword [ebp - 0x424]
mov esi, edi
jmp 0x4130b0
mov eax, dword [ebp - 0x464]
fld qword [0x65d730]
dec dword [ebp - 0x460]
mov edi, eax
mov edx, dword [edi]
add eax, 0x18
mov dword [ebp - 0x464], eax
mov eax, edx
and eax, 0x3f
mov dword [ebp - 0x438], edi
mov dword [ebp - 0x444], esi
mov dword [ebp - 0x434], 0
mov dword [ebp - 0x420], edx
cmp eax, 0xc
ja case.default.0x4130f9
jmp dword [eax*4 + 0x41425c]
lea eax, [esi + 2]
fstp st(0)
mov dword [ebp - 0x418], eax
cmp dword [ebp - 0x42c], eax
jae 0x413140
mov eax, dword [ebp - 0x428]
push esi
lea edx, [ebp - 0x42c]
push edx
push eax
mov ecx, 2
call fcn.00412e70
mov ecx, dword [eax + 4]
shr esi, 1
mov dword [ebp - 0x428], eax
mov eax, dword [ebp - 0x418]
lea ebx, [ecx + esi*2]
mov dx, word [edi + 0x10]
mov word [ebx], dx
add ebx, 2
mov esi, eax
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
jmp 0x4140ca
mov ecx, dword [edi + 0x10]
fstp st(0)
lea eax, [ecx + esi]
cmp dword [ebp - 0x42c], eax
jae 0x413191
mov eax, dword [ebp - 0x428]
push esi
lea edx, [ebp - 0x42c]
push edx
push eax
call fcn.00412e70
mov edx, dword [eax + 4]
mov ecx, esi
shr ecx, 1
mov dword [ebp - 0x428], eax
lea ebx, [edx + ecx*2]
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0x14]
push eax
push ecx
push ebx
call fcn.00534c80
mov eax, dword [edi + 0x10]
mov edx, eax
shr edx, 1
add esp, 0xc
lea ebx, [ebx + edx*2]
add esi, eax
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
jmp 0x4140ca
mov eax, dword [edi + 0x10]
fstp st(0)
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4131c7
sub eax, edx
sar eax, 1
lea edi, [eax + eax]
lea eax, [edi + esi]
mov dword [ebp - 0x418], eax
cmp dword [ebp - 0x42c], eax
jae 0x41320e
mov ecx, dword [ebp - 0x428]
push esi
lea eax, [ebp - 0x42c]
push eax
push ecx
mov ecx, edi
call fcn.00412e70
mov edx, dword [eax + 4]
shr esi, 1
mov dword [ebp - 0x428], eax
lea ebx, [edx + esi*2]
mov eax, dword [ebp - 0x438]
mov ecx, dword [eax + 0x10]
push edi
push ecx
push ebx
call fcn.00534c80
mov esi, dword [ebp - 0x418]
add esp, 0xc
shr edi, 1
lea ebx, [ebx + edi*2]
mov edi, dword [ebp - 0x438]
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
jmp 0x4140ca
fstp st(0)
cmp edx, 3
jne 0x41325a
mov edx, dword [edi + 0x14]
movzx eax, word [edi + 0x10]
mov dword [ebp - 0x41c], edx
jmp 0x41326f
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x41c], eax
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x413266
sub eax, edx
mov edx, dword [ebp - 0x41c]
mov ecx, eax
push ecx
mov dword [ebp - 0x420], eax
push edx
lea eax, [ebp - 0x45c]
push eax
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeSize]
test eax, eax
js 0x4140ca
mov ecx, dword [ebp - 0x45c]
lea edx, [ecx + esi]
cmp dword [ebp - 0x42c], edx
jae 0x4132d5
mov edx, dword [ebp - 0x428]
push esi
lea eax, [ebp - 0x42c]
push eax
push edx
call fcn.00412e70
mov edx, dword [eax + 4]
mov ecx, esi
shr ecx, 1
lea ebx, [edx + ecx*2]
mov ecx, dword [ebp - 0x45c]
mov dword [ebp - 0x428], eax
mov dword [ebp - 0x424], ebx
mov eax, dword [ebp - 0x420]
mov edx, dword [ebp - 0x41c]
push eax
push edx
push 0
push ecx
push ebx
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeN]
test eax, eax
js 0x4140ca
mov eax, dword [ebp - 0x45c]
mov ecx, eax
shr ecx, 1
lea ebx, [ebx + ecx*2]
add esi, eax
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
jmp 0x4140ca
mov eax, dword [edi + 0x10]
fstp st(0)
test eax, eax
jns 0x413331
neg eax
mov dword [ebp - 0x434], 1
jmp 0x413331
mov eax, dword [edi + 0x10]
fstp st(0)
mov dword [ebp - 0x430], 0xa
test edx, 0x100
je 0x413359
mov cl, byte [edi + 0xa]
cmp cl, 2
jb 0x413359
cmp cl, 0x45
ja 0x413359
movzx ecx, cl
mov dword [ebp - 0x430], ecx
mov dword [ebp - 0x43c], str.0123456789abcdefghijklmnopqrstuvwxyz_________._:_________
test edx, 0x20000000
je 0x413375
mov dword [ebp - 0x43c], str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
xor ecx, ecx
lea edi, [ebp - 0x16]
mov dword [ebp - 0x424], ecx
cmp eax, ecx
je 0x413558
test edx, 0x10000
je 0x41352f
mov dword [ebp - 0x41c], ecx
xor edx, edx
div dword [ebp - 0x430]
mov ecx, dword [ebp - 0x43c]
inc dword [ebp - 0x424]
sub edi, 2
movsx dx, byte [edx + ecx]
mov ecx, dword [ebp - 0x41c]
inc ecx
mov word [edi + 2], dx
mov dword [ebp - 0x41c], ecx
cmp ecx, 3
jne 0x4133ed
test eax, eax
je 0x4133f1
mov cx, word [0x6786a4]
mov word [edi], cx
sub edi, 2
inc dword [ebp - 0x424]
mov dword [ebp - 0x41c], 0
test eax, eax
jne 0x41339a
mov edx, dword [ebp - 0x420]
xor ecx, ecx
test byte [ebp - 0x434], 1
jne 0x41340a
test edx, 0x20000
je 0x41340f
mov ecx, 1
test edx, 0x40000
je 0x41344c
test edx, 0x10000
jne 0x41344c
mov edx, dword [ebp - 0x438]
movzx eax, word [edx + 6]
mov edx, dword [ebp - 0x424]
add edx, ecx
cmp edx, eax
jae 0x41344c
or dword [ebp - 0x434], 4
sub eax, ecx
sub eax, dword [ebp - 0x424]
mov dword [ebp - 0x458], eax
add ecx, eax
mov eax, dword [ebp - 0x424]
add eax, ecx
mov ecx, dword [ebp - 0x42c]
add eax, eax
add eax, esi
add edi, 2
mov dword [ebp - 0x440], edi
mov dword [ebp - 0x43c], eax
cmp ecx, eax
jae 0x41351e
add ecx, ecx
mov dword [ebp - 0x420], ecx
cmp ecx, eax
jae 0x413489
mov dword [ebp - 0x420], eax
mov ecx, eax
mov eax, dword [0x682b2c]
add ecx, 0xa
mov ebx, eax
mov dword [ebp - 0x418], ecx
call fcn.004124f0
lea ecx, [ebx + 0x10]
mov edx, 1
lock xadd dword [ecx], edx
mov ecx, dword [ebp - 0x418]
mov dword [eax + 0xc], ebx
mov dword [eax + 8], ecx
mov ecx, dword [ebp - 0x420]
mov dword [eax], 1
lea ebx, [eax + 0x10]
lea eax, [ebx + 8]
mov dword [ebx + 4], eax
mov dword [ebx], ecx
xor edx, edx
mov word [eax + ecx], dx
mov eax, dword [ebp - 0x428]
mov ecx, dword [eax + 4]
mov edx, dword [ebx + 4]
push esi
push ecx
push edx
call fcn.00534c80
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
add esp, 0xc
mov ecx, eax
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
jne 0x413504
call fcn.004125b0
mov eax, dword [ebp - 0x420]
mov ecx, dword [ebx + 4]
shr esi, 1
mov dword [ebp - 0x428], ebx
mov dword [ebp - 0x42c], eax
lea ebx, [ecx + esi*2]
mov al, byte [ebp - 0x434]
test al, 1
je 0x413573
mov edx, 0x2d
jmp 0x413586
xor edx, edx
div dword [ebp - 0x430]
mov ecx, dword [ebp - 0x43c]
inc dword [ebp - 0x424]
sub edi, 2
movsx dx, byte [edx + ecx]
mov word [edi + 2], dx
test eax, eax
jne 0x41352f
jmp 0x4133f1
mov eax, 0x30
mov word [ebp - 0x16], ax
lea edi, [ebp - 0x18]
mov dword [ebp - 0x424], 1
jmp 0x4133f7
mov ecx, dword [ebp - 0x438]
test dword [ecx], 0x20000
je 0x41358c
mov edx, 0x2b
mov word [ebx], dx
add ebx, 2
test al, 4
je 0x4135c8
cmp dword [ebp - 0x458], 0
jbe 0x4135bf
mov ecx, dword [ebp - 0x458]
mov eax, 0x30
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
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 - 0x440]
mov eax, dword [ebp - 0x458]
lea ebx, [ebx + eax*2]
mov esi, dword [ebp - 0x424]
add esi, esi
push esi
push edi
push ebx
call fcn.00534c80
mov edi, dword [ebp - 0x438]
add esp, 0xc
add ebx, esi
mov esi, dword [ebp - 0x43c]
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
jmp 0x4140ca
mov ecx, dword [ebp - 0x438]
fstp st(0)
mov eax, dword [ecx + 0x14]
mov edi, dword [ecx + 0x10]
xor ebx, ebx
cmp eax, ebx
jg 0x41363c
jl 0x413614
cmp edi, ebx
jae 0x41363c
neg edi
adc eax, ebx
neg eax
mov dword [ebp - 0x434], 1
jmp 0x41363c
mov eax, dword [ebp - 0x438]
fstp st(0)
mov edi, dword [eax + 0x10]
mov eax, dword [eax + 0x14]
mov ecx, dword [ebp - 0x438]
xor ebx, ebx
mov dword [ebp - 0x440], 0xa
test edx, 0x100
je 0x413664
mov cl, byte [ecx + 0xa]
cmp cl, 2
jb 0x413664
cmp cl, 0x45
ja 0x413664
movzx ecx, cl
mov dword [ebp - 0x440], ecx
mov dword [ebp - 0x418], str.0123456789abcdefghijklmnopqrstuvwxyz_________._:_________
test edx, 0x20000000
je 0x413680
mov dword [ebp - 0x418], str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
mov ecx, edi
or ecx, eax
lea esi, [ebp - 0x16]
mov dword [ebp - 0x41c], ebx
je 0x4137c4
mov dword [ebp - 0x478], ebx
test edx, 0x10000
je 0x413783
mov dword [ebp - 0x43c], ebx
jmp 0x4136b0
mov edx, dword [ebp - 0x478]
mov ecx, dword [ebp - 0x440]
push edx
push ecx
push eax
push edi
call fcn.0053bb50
inc dword [ebp - 0x41c]
mov edi, eax
mov eax, edx
mov edx, dword [ebp - 0x418]
movsx cx, byte [ecx + edx]
mov word [esi], cx
mov ecx, dword [ebp - 0x43c]
inc ecx
sub esi, 2
mov dword [ebp - 0x448], ebx
mov dword [ebp - 0x43c], ecx
cmp ecx, 3
jne 0x41371b
mov edx, edi
or edx, eax
je 0x413721
mov cx, word [0x6786a4]
mov word [esi], cx
sub esi, 2
inc dword [ebp - 0x41c]
mov dword [ebp - 0x43c], 0
mov edx, edi
or edx, eax
jne 0x4136b0
mov edx, dword [ebp - 0x420]
xor ecx, ecx
test byte [ebp - 0x434], 1
jne 0x41373a
test edx, 0x20000
je 0x41373f
mov ecx, 1
test edx, 0x40000
je 0x4137df
test edx, 0x10000
jne 0x4137df
mov edx, dword [ebp - 0x438]
movzx eax, word [edx + 6]
mov edx, dword [ebp - 0x41c]
lea edi, [ecx + edx]
cmp edi, eax
jae 0x4137e5
or dword [ebp - 0x434], 4
sub eax, ecx
sub eax, edx
mov dword [ebp - 0x454], eax
add ecx, eax
jmp 0x4137e5
mov ecx, dword [ebp - 0x478]
mov edx, dword [ebp - 0x440]
push ecx
push edx
push eax
push edi
call fcn.0053bb50
inc dword [ebp - 0x41c]
mov edi, eax
mov eax, edx
mov edx, dword [ebp - 0x418]
movsx cx, byte [ecx + edx]
mov word [esi], cx
mov edx, edi
sub esi, 2
or edx, eax
mov dword [ebp - 0x448], ebx
jne 0x413783
jmp 0x413721
mov eax, 0x30
mov word [ebp - 0x16], ax
lea esi, [ebp - 0x18]
mov dword [ebp - 0x41c], 1
jmp 0x413727
mov edx, dword [ebp - 0x41c]
lea eax, [ecx + edx]
mov ecx, dword [ebp - 0x42c]
add eax, eax
add eax, dword [ebp - 0x430]
add esi, 2
mov dword [ebp - 0x418], eax
cmp ecx, eax
jae 0x41389e
lea edi, [ecx + ecx]
cmp edi, eax
jae 0x413810
mov edi, eax
mov eax, dword [0x682b2c]
lea ecx, [edi + 0xa]
mov ebx, eax
call fcn.004124f0
lea edx, [ebx + 0x10]
mov ecx, 1
lock xadd dword [edx], ecx
mov dword [eax + 0xc], ebx
mov dword [eax], 1
lea ebx, [eax + 0x10]
lea ecx, [edi + 0xa]
mov dword [eax + 8], ecx
mov ecx, dword [ebp - 0x428]
lea eax, [ebx + 8]
mov dword [ebx + 4], eax
mov dword [ebx], edi
xor edx, edx
mov word [eax + edi], dx
mov eax, dword [ebp - 0x430]
mov edx, dword [ecx + 4]
push eax
mov eax, dword [ebx + 4]
push edx
push eax
call fcn.00534c80
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
add esp, 0xc
mov ecx, eax
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
jne 0x413882
call fcn.004125b0
mov eax, dword [ebp - 0x430]
mov ecx, dword [ebx + 4]
shr eax, 1
mov dword [ebp - 0x428], ebx
mov dword [ebp - 0x42c], edi
lea ebx, [ecx + eax*2]
jmp 0x4138a4
mov ebx, dword [ebp - 0x424]
mov al, byte [ebp - 0x434]
test al, 1
je 0x4138b5
mov edx, 0x2d
jmp 0x4138c8
mov ecx, dword [ebp - 0x438]
test dword [ecx], 0x20000
je 0x4138ce
mov edx, 0x2b
mov word [ebx], dx
add ebx, 2
test al, 4
je 0x413904
cmp dword [ebp - 0x454], 0
jbe 0x4138fb
mov ecx, dword [ebp - 0x454]
mov eax, 0x30
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
shr ecx, 1
mov edi, ebx
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov eax, dword [ebp - 0x454]
lea ebx, [ebx + eax*2]
mov edi, dword [ebp - 0x41c]
add edi, edi
push edi
push esi
push ebx
call fcn.00534c80
mov ecx, dword [ebp - 0x418]
add esp, 0xc
add ebx, edi
mov edi, dword [ebp - 0x438]
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], ecx
mov esi, ecx
jmp 0x4140ca
fstp st(0)
mov dword [ebp - 0x434], 0
test dl, 0x40
je 0x413966
movzx eax, word [edi + 4]
mov dword [ebp - 0x418], eax
cmp eax, 0xa2
jbe 0x413970
mov dword [ebp - 0x418], 0xa2
jmp 0x413970
mov dword [ebp - 0x418], 6
mov al, 0x66
test edx, 0x1000
je 0x41397e
mov al, 0x65
jmp 0x413988
test edx, 0x2000
je 0x413988
mov al, 0x61
test edx, 0x20000000
je 0x413992
add al, 0xe0
fld qword [edi + 0x10]
lea ecx, [ebp - 0x413]
mov dword [ebp - 0x420], ecx
fstp qword [ebp - 0x484]
mov ecx, dword [0x68176c]
push ecx
shr edx, 0x1d
and edx, 1
push edx
mov edx, dword [ebp - 0x418]
push edx
movsx eax, al
push eax
push 0x3ff
lea ecx, [ebp - 0x413]
push ecx
lea edx, [ebp - 0x484]
push edx
call fcn.00541590
add esp, 0x1c
test dword [edi], 0x8000
je 0x4139f8
mov eax, dword [0x68176c]
push eax
lea ecx, [ebp - 0x413]
push ecx
call fcn.00540be2
add esp, 8
lea eax, [ebp - 0x413]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x413a01
sub eax, edx
cmp byte [ebp - 0x413], 0x2d
mov dword [ebp - 0x41c], eax
jne 0x413a38
mov eax, 1
sub dword [ebp - 0x41c], eax
lea edx, [ebp - 0x412]
mov dword [ebp - 0x434], eax
mov dword [ebp - 0x420], edx
jmp 0x413a50
test dword [edi], 0x20000
mov edx, dword [ebp - 0x420]
je 0x413a50
mov dword [ebp - 0x434], 2
mov eax, dword [edi]
test eax, 0x10000
je 0x413bcb
test eax, 0x3000
jne 0x413bcb
mov cl, byte [edx]
sub cl, 0x30
mov dword [ebp - 0x43c], edx
mov eax, edx
mov dword [ebp - 0x420], edx
cmp cl, 0xa
jae 0x413a92
mov cl, byte [eax + 1]
inc eax
sub cl, 0x30
cmp cl, 0xa
jb 0x413a80
mov dword [ebp - 0x420], eax
mov edi, eax
sub edi, edx
mov dword [ebp - 0x418], edi
je 0x413aad
lea edx, [edi + 2]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
dec edx
jmp 0x413aaf
xor edx, edx
mov eax, dword [ebp - 0x41c]
mov ecx, dword [ebp - 0x434]
add eax, edx
add eax, eax
and ecx, 3
mov dword [ebp - 0x430], edx
mov dword [ebp - 0x440], ecx
je 0x413ad3
add eax, 2
lea ecx, [eax + esi]
cmp dword [ebp - 0x42c], ecx
jae 0x413b04
mov ecx, dword [ebp - 0x428]
push esi
lea edx, [ebp - 0x42c]
push edx
push ecx
mov ecx, eax
call fcn.00412e70
mov edx, esi
mov dword [ebp - 0x428], eax
mov eax, dword [eax + 4]
shr edx, 1
lea ebx, [eax + edx*2]
xor edx, edx
lea eax, [edi + 2]
mov ecx, 3
div ecx
mov al, byte [ebp - 0x434]
test al, 1
je 0x413b24
mov eax, 0x2d
mov word [ebx], ax
jmp 0x413b30
test al, 2
je 0x413b33
mov ecx, 0x2b
mov word [ebx], cx
add ebx, 2
cmp dword [ebp - 0x418], 0
je 0x413b77
lea esp, [esp]
mov eax, dword [ebp - 0x43c]
movsx cx, byte [eax]
inc eax
mov dword [ebp - 0x43c], eax
mov eax, edx
mov word [ebx], cx
dec edi
add ebx, 2
dec edx
test eax, eax
jne 0x413b73
test edi, edi
je 0x413b77
mov cx, word [0x6786a4]
mov word [ebx], cx
add ebx, 2
lea edx, [eax + 2]
test edi, edi
jne 0x413b40
cmp dword [ebp - 0x440], 0
je 0x413b83
add esi, 2
mov edi, dword [ebp - 0x41c]
sub edi, dword [ebp - 0x418]
mov ecx, dword [ebp - 0x420]
push edi
mov eax, ebx
call fcn.00412e00
lea edx, [edi + edi]
add edi, dword [ebp - 0x430]
shr edx, 1
add edi, dword [ebp - 0x418]
lea ebx, [ebx + edx*2]
lea esi, [esi + edi*2]
mov edi, dword [ebp - 0x438]
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
jmp 0x4140ca
xor edx, edx
test byte [ebp - 0x434], 3
je 0x413bdb
mov edx, 1
test eax, 0x40000
je 0x413c09
movzx eax, word [edi + 6]
mov ecx, dword [ebp - 0x41c]
add ecx, edx
cmp ecx, eax
jae 0x413c09
or dword [ebp - 0x434], 4
sub eax, edx
sub eax, dword [ebp - 0x41c]
mov dword [ebp - 0x450], eax
add edx, eax
mov eax, dword [ebp - 0x41c]
add edx, eax
add edx, edx
add edx, esi
mov dword [ebp - 0x418], edx
cmp dword [ebp - 0x42c], edx
jae 0x413cbd
mov edi, dword [ebp - 0x42c]
add edi, edi
mov eax, edx
cmp edi, eax
jae 0x413c37
mov edi, eax
mov eax, dword [0x682b2c]
lea ecx, [edi + 0xa]
mov ebx, eax
call fcn.004124f0
lea ecx, [ebx + 0x10]
mov edx, 1
lock xadd dword [ecx], edx
mov edx, dword [ebp - 0x428]
mov dword [eax + 0xc], ebx
mov dword [eax], 1
lea ebx, [eax + 0x10]
lea ecx, [edi + 0xa]
mov dword [eax + 8], ecx
lea eax, [ebx + 8]
mov dword [ebx], edi
mov dword [ebx + 4], eax
xor ecx, ecx
mov word [eax + edi], cx
mov eax, dword [edx + 4]
mov ecx, dword [ebx + 4]
push esi
push eax
push ecx
call fcn.00534c80
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
add esp, 0xc
mov edx, eax
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
jne 0x413ca3
call fcn.004125b0
mov edx, dword [ebx + 4]
shr esi, 1
mov dword [ebp - 0x42c], edi
mov edi, dword [ebp - 0x438]
mov dword [ebp - 0x428], ebx
lea ebx, [edx + esi*2]
mov al, byte [ebp - 0x434]
test al, 1
je 0x413cd1
mov ecx, 0x2d
mov word [ebx], cx
jmp 0x413cdd
test al, 2
je 0x413ce0
mov edx, 0x2b
mov word [ebx], dx
add ebx, 2
test al, 4
je 0x413d1c
cmp dword [ebp - 0x450], 0
jbe 0x413d13
mov ecx, dword [ebp - 0x450]
mov eax, 0x30
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
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 - 0x438]
mov eax, dword [ebp - 0x450]
lea ebx, [ebx + eax*2]
mov esi, dword [ebp - 0x41c]
mov ecx, dword [ebp - 0x420]
push esi
mov eax, ebx
call fcn.00412e00
lea ecx, [esi + esi]
mov esi, dword [ebp - 0x418]
shr ecx, 1
lea ebx, [ebx + ecx*2]
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
jmp 0x4140ca
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x468], ecx
and dword [ebp - 0x468], 0x7fffffff
mov dword [ebp - 0x470], ecx
and dword [ebp - 0x470], 0x80000000
mov dword [ebp - 0x46c], eax
or eax, ecx
fild qword [ebp - 0x46c]
mov dword [ebp - 0x474], 0
fild qword [ebp - 0x474]
mov dword [ebp - 0x420], 0
fchs
faddp st(1)
jne 0x413e03
lea eax, [esi + 2]
fstp st(0)
fstp st(0)
mov dword [ebp - 0x418], eax
cmp dword [ebp - 0x42c], eax
jae 0x413de5
mov eax, dword [ebp - 0x428]
push esi
lea edx, [ebp - 0x42c]
push edx
push eax
mov ecx, 2
call fcn.00412e70
mov ecx, dword [eax + 4]
shr esi, 1
mov dword [ebp - 0x428], eax
mov eax, dword [ebp - 0x418]
lea ebx, [ecx + esi*2]
mov edx, 0x30
mov word [ebx], dx
add ebx, 2
mov esi, eax
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
jmp 0x4140ca
test edx, 0x100
je 0x413e17
movzx eax, byte [edi + 0xa]
mov dword [ebp - 0x418], eax
jmp 0x413e21
mov dword [ebp - 0x418], 0xffffffff
fcom st(1)
fnstsw ax
test ah, 1
jne 0x413e53
mov ecx, dword [ebp - 0x420]
cmp ecx, 7
jae 0x413e4d
cmp ecx, dword [ebp - 0x418]
jae 0x413e4d
fmul qword [0x65d728]
inc ecx
fcom st(1)
fnstsw ax
test ah, 1
je 0x413e30
mov dword [ebp - 0x420], ecx
fstp st(1)
test dl, 0x40
je 0x413e60
mov di, word [edi + 4]
jmp 0x413e65
mov edi, 2
movzx eax, di
mov dword [ebp - 0x434], 0
cmp eax, 0xa2
jbe 0x413e7e
mov eax, 0xa2
mov ecx, dword [0x68176c]
fstp qword [ebp - 0x48c]
push ecx
push 0
push eax
push 0x66
lea edi, [ebp - 0x413]
push 0x3ff
mov edx, edi
push edx
lea eax, [ebp - 0x48c]
push eax
call fcn.00541590
mov ecx, dword [0x68176c]
push ecx
mov edx, edi
push edx
call fcn.00540be2
mov eax, edi
add esp, 0x24
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x413ec1
sub eax, edx
cmp byte [ebp - 0x413], 0x2d
mov dword [ebp - 0x41c], eax
jne 0x413ef0
mov eax, 1
sub dword [ebp - 0x41c], eax
mov dword [ebp - 0x434], eax
lea edi, [ebp - 0x412]
mov cl, byte [edi]
sub cl, 0x30
mov dword [ebp - 0x448], edi
mov eax, edi
mov dword [ebp - 0x43c], edi
cmp cl, 0xa
jae 0x413f1a
mov dl, byte [eax + 1]
inc eax
sub dl, 0x30
cmp dl, 0xa
jb 0x413f08
mov dword [ebp - 0x43c], eax
mov ecx, eax
sub ecx, edi
mov dword [ebp - 0x418], ecx
je 0x413f35
lea edx, [ecx + 2]
mov eax, 0xaaaaaaab
mul edx
shr edx, 1
dec edx
jmp 0x413f37
xor edx, edx
mov eax, dword [ebp - 0x41c]
add eax, edx
mov dword [ebp - 0x424], edx
mov edx, dword [ebp - 0x434]
add eax, eax
and edx, 3
mov dword [ebp - 0x440], edx
je 0x413f5b
add eax, 2
lea edx, [eax + esi]
cmp dword [ebp - 0x42c], edx
jae 0x413f92
mov edx, dword [ebp - 0x428]
push esi
lea ecx, [ebp - 0x42c]
push ecx
push edx
mov ecx, eax
call fcn.00412e70
mov edx, dword [eax + 4]
mov ecx, esi
shr ecx, 1
lea ebx, [edx + ecx*2]
mov ecx, dword [ebp - 0x418]
mov dword [ebp - 0x428], eax
xor edx, edx
lea eax, [ecx + 2]
mov edi, 3
div edi
mov al, byte [ebp - 0x434]
mov dword [ebp - 0x430], ecx
test al, 1
je 0x413fb3
lea eax, [edi + 0x2a]
jmp 0x413fbc
test al, 2
je 0x413fc2
mov eax, 0x2b
mov word [ebx], ax
add ebx, 2
test ecx, ecx
je 0x413ffd
mov eax, dword [ebp - 0x430]
mov ecx, dword [ebp - 0x448]
movsx di, byte [ecx]
mov word [ebx], di
mov edi, edx
dec eax
add ebx, 2
inc ecx
dec edx
test edi, edi
jne 0x413ff9
test eax, eax
je 0x413ffd
mov dx, word [0x6786a4]
mov word [ebx], dx
add ebx, 2
lea edx, [edi + 2]
test eax, eax
jne 0x413fd2
cmp dword [ebp - 0x440], 0
je 0x414009
add esi, 2
mov edi, dword [ebp - 0x41c]
sub edi, dword [ebp - 0x418]
mov ecx, dword [ebp - 0x43c]
push edi
mov eax, ebx
call fcn.00412e00
lea eax, [edi + edi]
add edi, dword [ebp - 0x424]
shr eax, 1
add edi, dword [ebp - 0x418]
lea ebx, [ebx + eax*2]
lea esi, [esi + edi*2]
mov edi, dword [ebp - 0x420]
mov eax, dword [edi*8 + 0x67865c]
lea edi, [edi*8 + 0x67865c]
lea edx, [eax + esi + 2]
cmp dword [ebp - 0x42c], edx
jae 0x414081
mov edx, dword [ebp - 0x428]
lea ecx, [eax + 2]
push esi
lea eax, [ebp - 0x42c]
push eax
push edx
call fcn.00412e70
mov edx, dword [eax + 4]
mov ecx, esi
shr ecx, 1
mov dword [ebp - 0x428], eax
lea ebx, [edx + ecx*2]
mov edx, dword [ebp - 0x420]
mov eax, 0x20
mov word [ebx], ax
mov ecx, dword [edi]
mov eax, dword [edx*8 + 0x678660]
push ecx
push eax
lea ecx, [ebx + 2]
push ecx
call fcn.00534c80
mov edi, dword [edi]
lea edx, [edi + 2]
add esp, 0xc
shr edx, 1
lea esi, [esi + edi + 2]
mov edi, dword [ebp - 0x438]
lea ebx, [ebx + edx*2]
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
jmp 0x4140ca
fstp st(0)
mov ecx, esi
sub ecx, dword [ebp - 0x444]
test dword [edi], 0xc0000000
mov dword [ebp - 0x444], ecx
je 0x414229
movzx eax, word [edi + 6]
add eax, eax
cmp ecx, eax
jae 0x414229
sub eax, ecx
lea edx, [eax + esi]
mov dword [ebp - 0x448], eax
mov dword [ebp - 0x418], edx
cmp dword [ebp - 0x42c], edx
jae 0x4141b1
mov edi, dword [ebp - 0x42c]
add edi, edi
mov eax, edx
cmp edi, eax
jae 0x41411f
mov edi, eax
mov eax, dword [0x682b2c]
lea ecx, [edi + 0xa]
mov ebx, eax
call fcn.004124f0
lea ecx, [ebx + 0x10]
mov edx, 1
lock xadd dword [ecx], edx
mov edx, dword [ebp - 0x428]
mov dword [eax + 0xc], ebx
mov dword [eax], 1
lea ebx, [eax + 0x10]
lea ecx, [edi + 0xa]
mov dword [eax + 8], ecx
lea eax, [ebx + 8]
mov dword [ebx], edi
mov dword [ebx + 4], eax
xor ecx, ecx
mov word [edi + eax], cx
mov eax, dword [edx + 4]
mov ecx, dword [ebx + 4]
push esi
push eax
push ecx
call fcn.00534c80
mov eax, dword [ebp - 0x428]
add eax, 0xfffffff0
add esp, 0xc
mov edx, eax
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
jne 0x41418b
call fcn.004125b0
mov edx, dword [ebx + 4]
mov eax, dword [ebp - 0x448]
mov ecx, dword [ebp - 0x444]
shr esi, 1
mov dword [ebp - 0x42c], edi
mov edi, dword [ebp - 0x438]
mov dword [ebp - 0x428], ebx
lea ebx, [edx + esi*2]
mov edx, dword [edi]
test dl, dl
jns 0x4141c3
movzx esi, word [edi + 8]
mov dword [ebp - 0x444], esi
jmp 0x4141cd
mov dword [ebp - 0x444], 0x20
mov esi, eax
test edx, edx
jns 0x4141db
shr esi, 1
je 0x414214
mov edi, ebx
jmp 0x4141f9
mov edx, ecx
shr edx, 1
add edx, edx
mov edi, ebx
sub edi, edx
push ecx
shr esi, 1
lea eax, [edi + esi*2]
push edi
push eax
call fcn.00536370
add esp, 0xc
test esi, esi
je 0x414214
mov eax, dword [ebp - 0x444]
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov ecx, esi
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
lea ebx, [ebx + esi*2]
mov esi, dword [ebp - 0x418]
mov dword [ebp - 0x424], ebx
mov dword [ebp - 0x430], esi
cmp dword [ebp - 0x460], 0
jne 0x4130b0
mov eax, dword [ebp - 0x428]
mov ecx, dword [eax + 4]
mov dword [eax], esi
shr esi, 1
xor edx, edx
mov word [ecx + esi*2], dx
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00534bba
mov esp, ebp
pop ebp
ret 4