Function at 0x529040
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x4b4
mov eax, dword [0x62d040]
xor eax, esp
mov dword [esp + 0x4b0], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x18]
push ebx
push esi
mov dword [esp + 0x68], eax
mov eax, dword [ebp + 0x10]
mov ebx, eax
push edi
xor edi, edi
mov dword [esp + 0x88], eax
test eax, eax
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x48], ebx
sete al
mov dword [esp + 0x3c], edi
test byte [0x6310a0], 1
mov byte [esp + 0x3b], al
jne 0x5291af
mov esi, 0x6310a0
lock bts dword [esi], 0x1f
jb 0x529198
push 4
lea eax, [esp + 0xb4]
push eax
push 0xe
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x5290f0
mov ax, word [esp + 0xb0]
test ax, ax
je 0x5290f0
jmp 0x5290e0
cmp word [esp + 0xb2], di
jne 0x5290f0
mov word [0x62e688], ax
push 4
lea eax, [esp + 0xb4]
push eax
push 0xf
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x529130
mov ax, word [esp + 0xb0]
test ax, ax
je 0x529130
jmp 0x529120
cmp word [esp + 0xb2], di
jne 0x529130
mov word [0x62e6e8], ax
cmp word [0x62e688], 0x2e
je 0x52914e
push 0x5c9adc
push 0
call fcn.0058b0db
add esp, 8
mov dword [0x6355f4], eax
lock bts dword [esi], 0
jb 0x5291ab
mov esi, dword [0x6310a4]
test esi, esi
je 0x529168
push 0
push esi
call dword [sym.imp.ntdll.dll_NtSetEvent]
mov eax, 0xfffffffe
mov ecx, 0x6310a0
lock xadd dword [ecx], eax
shr eax, 1
and eax, 0x7fff
sub eax, 1
jne 0x5291ab
test esi, esi
je 0x5291ab
push esi
call dword [sym.imp.ntdll.dll_NtClose]
mov dword [0x6310a4], edi
jmp 0x5291ab
test byte [0x6310a0], 1
nop
jne 0x5291af
xor edx, edx
mov ecx, esi
call sym.SystemInformer.exe_PhfWaitForEvent
mov al, byte [esp + 0x3b]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
test ecx, ecx
je 0x52a14f
fld qword [0x61d478]
mov si, word [0x62e6e8]
fst qword [esp + 0xa0]
fld qword [0x61d400]
fst qword [esp + 0xa8]
mov byte [esp + 0x3b], al
mov dword [esp + 0x80], 1
mov dword [esp + 0x78], 3
mov word [esp + 0x42], si
mov eax, dword [esp + 0x6c]
dec ecx
mov esi, eax
mov dword [ebp + 0xc], ecx
mov edx, eax
mov dword [esp + 0x68], esi
mov ecx, eax
mov dword [esp + 0xb0], edi
add eax, 0x18
mov dword [esp + 0x44], 0
mov dword [esp + 0x6c], eax
mov eax, dword [esi]
mov dword [esp + 0x50], eax
and eax, 0x3f
cmp eax, 0xc
ja case.default.0x529234
jmp dword [eax*4 + 0x52a1ac]
cmp byte [esp + 0x3b], 0
fstp st(1)
fstp st(0)
jne 0x52926d
lea eax, [edi + 2]
cmp dword [ebp + 0x14], eax
jae 0x529266
add ebx, 2
mov byte [esp + 0x3b], 1
add edi, 2
mov dword [esp + 0x48], ebx
mov dword [esp + 0x3c], edi
jmp 0x52a060
mov ax, word [esi + 0x10]
mov word [ebx], ax
add ebx, 2
add edi, 2
mov dword [esp + 0x48], ebx
mov dword [esp + 0x3c], edi
jmp 0x52a060
cmp byte [esp + 0x3b], 0
fstp st(1)
fstp st(0)
jne 0x5292af
mov ecx, dword [esi + 0x10]
lea eax, [ecx + edi]
cmp dword [ebp + 0x14], eax
jae 0x5292a2
mov byte [esp + 0x3b], 1
jmp 0x5292af
push ecx
push dword [esi + 0x14]
push ebx
call fcn.005831c0
add esp, 0xc
mov eax, dword [esi + 0x10]
shr eax, 1
add edi, dword [esi + 0x10]
mov dword [esp + 0x3c], edi
lea ebx, [ebx + eax*2]
mov dword [esp + 0x48], ebx
jmp 0x52a060
push dword [esi + 0x10]
fstp st(1)
fstp st(0)
call sym.SystemInformer.exe_PhCountStringZ
cmp byte [esp + 0x3b], 0
mov esi, eax
jne 0x5292ff
lea edx, [esi + esi]
lea ecx, [edx + edi]
cmp dword [ebp + 0x14], ecx
jae 0x5292ee
mov byte [esp + 0x3b], 1
jmp 0x5292ff
mov ecx, dword [esp + 0x68]
push edx
push dword [ecx + 0x10]
push ebx
call fcn.005831c0
add esp, 0xc
lea eax, [esi + esi]
add edi, eax
lea ebx, [ebx + esi*2]
mov ax, word [0x62e6e8]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x3c], edi
mov word [esp + 0x42], ax
jmp 0x52a060
cmp dword [esp + 0x50], 3
fstp st(1)
fstp st(0)
jne 0x529332
mov edi, dword [esi + 0x14]
mov esi, dword [ecx + 0x10]
jmp 0x529349
mov edi, dword [ecx + 0x10]
mov esi, edi
lea ecx, [esi + 1]
lea ebx, [ebx]
mov al, byte [esi]
inc esi
test al, al
jne 0x529340
sub esi, ecx
push esi
push edi
lea eax, [esp + 0x78]
push eax
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeSize]
test eax, eax
js 0x529c65
cmp byte [esp + 0x3b], 0
jne 0x529392
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x70]
add eax, ecx
cmp dword [ebp + 0x14], eax
jae 0x52937b
mov byte [esp + 0x3b], 1
jmp 0x529396
push esi
push edi
push 0
push ecx
push ebx
lfence
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeN]
test eax, eax
js 0x529c65
mov ecx, dword [esp + 0x70]
mov edi, dword [esp + 0x3c]
mov eax, ecx
shr eax, 1
add edi, ecx
mov dword [esp + 0x3c], edi
lea ebx, [ebx + eax*2]
mov ax, word [0x62e6e8]
mov dword [esp + 0x48], ebx
mov word [esp + 0x42], ax
jmp 0x52a060
mov eax, dword [edx + 0x10]
mov ecx, eax
cdq
mov esi, eax
shr ecx, 0x1f
xor esi, edx
mov dword [esp + 0x44], ecx
sub esi, edx
jmp 0x5293d3
mov esi, dword [esi + 0x10]
fstp st(1)
fstp st(0)
mov edx, dword [esp + 0x50]
mov dword [esp + 0x54], 0xa
test edx, 0x100
je 0x529401
mov ecx, dword [esp + 0x68]
mov cl, byte [ecx + 0xa]
mov al, cl
sub al, 2
cmp al, 0x43
ja 0x529401
movzx eax, cl
mov dword [esp + 0x54], eax
test edx, 0x20000000
mov ecx, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
mov eax, 0x618470
cmovne eax, ecx
xor edi, edi
mov dword [esp + 0x58], eax
lea ecx, [esp + 0x4b6]
test esi, esi
je 0x5294c2
test edx, 0x10000
je 0x52949f
xor eax, eax
mov dword [esp + 0x4c], eax
mov eax, esi
xor edx, edx
div dword [esp + 0x54]
inc edi
mov esi, eax
mov dword [esp + 0x60], edi
mov eax, dword [esp + 0x58]
movsx ax, byte [eax + edx]
mov word [ecx], ax
sub ecx, 2
mov eax, dword [esp + 0x4c]
inc eax
mov dword [esp + 0x4c], eax
cmp eax, 3
jne 0x529499
test esi, esi
je 0x5294df
mov ax, word [esp + 0x42]
xor edx, edx
mov word [ecx], ax
mov eax, esi
div dword [esp + 0x54]
mov dword [esp + 0x4c], 1
mov esi, eax
mov eax, dword [esp + 0x58]
movsx eax, byte [edx + eax]
mov word [ecx - 2], ax
add ecx, 0xfffffffc
add edi, 2
mov dword [esp + 0x60], edi
test esi, esi
jne 0x529437
jmp 0x5294df
mov ebx, eax
mov eax, esi
xor edx, edx
div dword [esp + 0x54]
inc edi
mov esi, eax
movsx ax, byte [ebx + edx]
mov word [ecx], ax
sub ecx, 2
test esi, esi
jne 0x5294a1
mov ebx, dword ds:[esp + 0x48]
jmp 0x5294db
mov eax, 0x30
lea ecx, [esp + 0x4b4]
mov word [esp + 0x4b6], ax
mov edi, 1
mov dword [esp + 0x60], edi
mov esi, dword [esp + 0x50]
xor edx, edx
cmp dword [esp + 0x44], edx
je 0x5294f2
mov edx, 1
jmp 0x529500
test esi, 0x20000
mov eax, 1
cmovne edx, eax
mov eax, esi
mov dword [esp + 0x58], edx
and eax, 0x50000
cmp eax, 0x40000
jne 0x52953b
mov eax, dword ds:[esp + 0x68]
movzx esi, word [eax + 6]
lea eax, [edx + edi]
cmp eax, esi
jae 0x529537
or dword [esp + 0x44], 4
sub esi, edx
sub esi, edi
add edx, esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x58], edx
mov esi, dword [esp + 0x50]
add ecx, 2
cmp byte [esp + 0x3b], 0
mov dword [esp + 0x4c], ecx
jne 0x5295d5
lea eax, [edx + edi]
mov edx, dword [esp + 0x3c]
lea eax, [edx + eax*2]
cmp dword [ebp + 0x14], eax
jae 0x529575
mov eax, dword [esp + 0x58]
add eax, edi
mov byte [esp + 0x3b], 1
mov edi, edx
lea edi, [edi + eax*2]
mov dword [esp + 0x3c], edi
jmp 0x52a060
mov eax, dword [esp + 0x44]
test al, 1
je 0x529584
mov edx, 0x2d
jmp 0x529591
test esi, 0x20000
je 0x529597
mov edx, 0x2b
mov word [ebx], dx
add ebx, 2
test al, 4
je 0x5295c1
mov edx, dword ds:[esp + 0x7c]
test edx, edx
je 0x5295be
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 [esp + 0x4c]
mov edi, dword [esp + 0x60]
lea ebx, [ebx + edx*2]
lea esi, [edi + edi]
push esi
push ecx
push ebx
call fcn.005831c0
add esp, 0xc
add ebx, esi
mov dword [esp + 0x48], ebx
mov eax, dword [esp + 0x58]
add eax, edi
mov edi, dword [esp + 0x3c]
lea edi, [edi + eax*2]
mov dword [esp + 0x3c], edi
jmp 0x52a060
mov edx, dword [esi + 0x14]
fstp st(1)
mov ecx, dword [esi + 0x10]
fstp st(0)
mov dword [esp + 0x60], ecx
test edx, edx
jg 0x529623
jl 0x529604
nop
test ecx, ecx
jae 0x529623
neg ecx
mov dword [esp + 0x44], 1
adc edx, 0
neg edx
jmp 0x52961f
mov ecx, dword [esi + 0x10]
fstp st(1)
mov edx, dword [esi + 0x14]
fstp st(0)
mov dword [esp + 0x60], ecx
mov esi, dword [esp + 0x50]
mov dword [esp + 0x4c], 0xa
test esi, 0x100
je 0x52964d
mov eax, dword [esp + 0x68]
mov ah, byte [eax + 0xa]
mov al, ah
sub al, 2
cmp al, 0x43
ja 0x52964d
movzx eax, ah
mov dword [esp + 0x4c], eax
test esi, 0x20000000
lea edi, [esp + 0x4b6]
mov esi, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
mov eax, 0x618470
cmovne eax, esi
xor esi, esi
mov dword [esp + 0x54], eax
mov eax, ecx
or eax, edx
je 0x529730
test dword [esp + 0x50], 0x10000
mov ebx, dword [esp + 0x60]
je 0x529702
xor eax, eax
mov dword [esp + 0x58], eax
nop
push ebx
push 0
push dword [esp + 0x54]
push edx
push ebx
call fcn.005a02f0
pop ebx
nop
mov ebx, eax
inc esi
mov eax, dword [esp + 0x54]
mov dword [esp + 0x60], esi
movsx cx, byte [eax + ecx]
mov eax, dword [esp + 0x58]
inc eax
mov word [edi], cx
sub edi, 2
cmp eax, 3
jne 0x5296d9
mov eax, ebx
or eax, edx
je 0x5296e7
mov ax, word [esp + 0x42]
mov word [edi], ax
sub edi, 2
inc esi
jmp 0x529689
mov dword [esp + 0x58], eax
mov eax, ebx
or eax, edx
mov dword [esp + 0x60], esi
jne 0x529690
mov ebx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
xor ecx, ecx
mov eax, dword [esp + 0x50]
test edx, edx
je 0x52974f
mov ecx, 1
jmp 0x52975c
push ebx
push 0
push dword [esp + 0x54]
push edx
push ebx
call fcn.005a02f0
pop ebx
nop
mov ebx, eax
inc esi
mov eax, dword [esp + 0x54]
movsx ax, byte [eax + ecx]
mov word [edi], ax
mov eax, ebx
sub edi, 2
or eax, edx
jne 0x529702
mov dword [esp + 0x60], esi
jmp 0x5296e7
mov eax, 0x30
lea edi, [esp + 0x4b4]
mov esi, 1
mov word [esp + 0x4b6], ax
mov dword [esp + 0x60], esi
jmp 0x5296eb
test eax, 0x20000
cmovne ecx, dword [esp + 0x80]
and eax, 0x50000
mov dword [esp + 0x58], ecx
cmp eax, 0x40000
jne 0x529795
mov eax, dword [esp + 0x68]
movzx edx, word [eax + 6]
lea eax, [ecx + esi]
cmp eax, edx
jae 0x529791
or dword [esp + 0x44], 4
sub edx, ecx
sub edx, esi
add ecx, edx
mov dword [esp + 0x84], edx
mov dword [esp + 0x58], ecx
mov edx, dword [esp + 0x44]
add edi, 2
cmp byte [esp + 0x3b], 0
mov dword [esp + 0x4c], edi
jne 0x529830
lea eax, [ecx + esi]
mov ecx, dword [esp + 0x3c]
lea eax, [ecx + eax*2]
cmp dword [ebp + 0x14], eax
jae 0x5297d1
mov eax, dword [esp + 0x60]
mov edi, ecx
add eax, dword [esp + 0x58]
mov byte [esp + 0x3b], 1
lea edi, [edi + eax*2]
mov dword [esp + 0x3c], edi
jmp 0x52a060
test dl, 1
je 0x5297dd
mov eax, 0x2d
jmp 0x5297ec
test dword [esp + 0x50], 0x20000
je 0x5297f2
mov eax, 0x2b
mov word [ebx], ax
add ebx, 2
test dl, 4
je 0x52981d
mov edx, dword ds:[esp + 0x84]
test edx, edx
je 0x52981a
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 [esp + 0x4c]
lea ebx, [ebx + edx*2]
add esi, esi
push esi
push edi
push ebx
call fcn.005831c0
add esp, 0xc
add ebx, esi
mov dword [esp + 0x48], ebx
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x3c]
add eax, dword [esp + 0x58]
lea edi, [edi + eax*2]
mov dword [esp + 0x3c], edi
jmp 0x52a060
mov eax, dword [esp + 0x50]
fstp st(1)
mov dword [esp + 0x44], 0
fstp st(0)
test al, 0x40
je 0x52986f
movzx edx, word [esi + 4]
cmp edx, 0xa2
jbe 0x529874
mov edx, 0xa2
jmp 0x529874
mov edx, 6
fld qword [esi + 0x10]
lea edi, [esp + 0xb9]
sub esp, 0x10
mov dword [esp + 0x70], edi
mov ecx, edi
fstp qword [esp + 8]
push ecx
mov ecx, eax
call fcn.005723c0
test al, al
jne 0x5298a2
mov byte ds:[esp + 0xb9], al
jmp 0x5298ff
mov edx, dword [0x6355f4]
test edx, edx
je 0x5298d5
mov al, byte [esp + 0xb9]
lea ecx, [esp + 0xb9]
test al, al
je 0x5298d5
mov edi, edi
cmp al, 0x2e
je 0x5298ce
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x5298c0
jmp 0x5298d5
mov al, byte [0x62e688]
mov byte [ecx], al
test dword [esp + 0x50], 0x20000000
je 0x5298ff
lea eax, [esp + 0xb9]
test edx, edx
je 0x5298f6
push edx
push eax
call fcn.0058a88c
add esp, 8
jmp 0x5298ff
push eax
call fcn.0058a830
add esp, 4
mov eax, dword [esi]
mov dword [esp + 0x58], eax
test eax, 0x8000
je 0x5299ae
mov cl, byte ds:[esp + 0xb9]
lea eax, [esp + 0xb9]
test cl, cl
je 0x529944
mov ch, byte [0x62e688]
mov dl, cl
lea esp, [esp]
mov cl, dl
cmp dl, ch
je 0x529944
mov cl, byte ds:[eax + 1]
inc eax
mov dl, cl
test cl, cl
jne 0x529930
inc eax
test cl, cl
je 0x5299ae
mov cl, byte [eax]
test cl, cl
je 0x529964
nop
cmp cl, 0x65
je 0x529964
cmp cl, 0x45
je 0x529964
mov cl, byte ds:[eax + 1]
inc eax
test cl, cl
jne 0x529950
mov cl, byte [eax - 1]
mov dword [esp + 0x4c], eax
dec eax
mov byte [esp + 0x42], cl
cmp cl, 0x30
jne 0x529985
mov dl, byte ds:[eax - 1]
dec eax
mov byte [esp + 0x42], dl
cmp dl, 0x30
je 0x529975
mov dl, byte [0x62e688]
lea ecx, [eax - 1]
cmp byte [esp + 0x42], dl
mov edx, dword [esp + 0x4c]
cmovne ecx, eax
lea esp, [esp]
mov al, byte [edx]
lea ecx, [ecx + 1]
mov byte [ecx], al
lea edx, [edx + 1]
test al, al
jne 0x5299a0
lea esi, [esp + 0xb9]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x5299b8
mov eax, dword [esp + 0x58]
sub esi, ecx
cmp byte [esp + 0xb9], 0x2d
mov dword [esp + 0x4c], esi
jne 0x5299ea
lea edi, [esp + 0xba]
dec esi
mov edx, 1
mov dword [esp + 0x60], edi
mov dword [esp + 0x4c], esi
jmp 0x5299fb
mov edx, dword [esp + 0x44]
test eax, 0x20000
mov ecx, 2
cmovne edx, ecx
and eax, 0x13000
mov dword [esp + 0x44], edx
cmp eax, 0x10000
jne 0x529b6b
mov al, byte [edi]
mov ecx, edi
sub al, 0x30
mov dword [esp + 0x54], edi
cmp al, 0xa
jae 0x529a2e
lea ecx, [ecx]
mov al, byte [ecx + 1]
inc ecx
sub al, 0x30
cmp al, 0xa
jb 0x529a20
mov dword [esp + 0x54], ecx
mov eax, ecx
sub eax, edi
mov dword [esp + 0x50], eax
lea edx, [eax + 2]
mov dword [esp + 0x60], edx
je 0x529a51
mov eax, 0xaaaaaaab
mul edx
mov eax, edx
mov edx, dword [esp + 0x60]
shr eax, 1
dec eax
jmp 0x529a53
xor eax, eax
mov cx, word [0x62e6e8]
mov dword [esp + 0x58], eax
add eax, esi
add eax, eax
mov word [esp + 0x42], cx
cmp byte [esp + 0x3b], 0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x60], eax
jne 0x529a96
add eax, 2
cmp dword [esp + 0x44], 0
cmove eax, dword [esp + 0x60]
add eax, dword [esp + 0x3c]
cmp dword [ebp + 0x14], eax
jae 0x529a96
mov byte [esp + 0x3b], 1
jmp 0x529b1c
mov ecx, dword [esp + 0x50]
mov eax, edx
xor edx, edx
div dword [esp + 0x78]
cmp byte [esp + 0x3b], 0
jne 0x529b18
mov eax, dword [esp + 0x44]
test al, 1
je 0x529ab8
mov eax, 0x2d
jmp 0x529ac1
test al, 2
je 0x529acb
mov eax, 0x2b
mov word [ebx], ax
add ebx, 2
mov dword [esp + 0x48], ebx
mov eax, dword [esp + 0x50]
test eax, eax
je 0x529b65
mov si, word [esp + 0x42]
lea esp, [esp]
movsx ax, byte [edi]
dec ecx
inc edi
mov word [ebx], ax
mov eax, edx
add ebx, 2
dec edx
test eax, eax
jne 0x529b0c
test ecx, ecx
je 0x529b10
mov word [ebx], si
dec ecx
movsx ax, byte [edi]
mov edx, 1
mov word [ebx + 2], ax
add ebx, 4
inc edi
test ecx, ecx
jne 0x529ae0
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x48], ebx
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x44], 0
mov edi, dword [esp + 0x3c]
je 0x529b2e
add edi, 2
add eax, dword [esp + 0x58]
sub esi, dword [esp + 0x50]
cmp byte [esp + 0x3b], 0
lea edi, [edi + eax*2]
mov dword [esp + 0x3c], edi
jne 0x52a060
push ebx
push esi
push ecx
call sym.SystemInformer.exe_PhZeroExtendToUtf16Buffer
lea eax, [esi + esi]
lea ebx, [ebx + esi*2]
add edi, eax
mov dword [esp + 0x48], ebx
mov dword [esp + 0x3c], edi
jmp 0x52a060
mov ecx, dword [esp + 0x54]
jmp 0x529b20
mov eax, dword ds:[esp + 0x68]
xor ecx, ecx
test edx, edx
setne cl
test dword [eax], 0x40000
mov edx, ecx
je 0x529b9f
movzx edi, word [eax + 6]
lea eax, [esi + ecx]
cmp eax, edi
jae 0x529b9f
or dword [esp + 0x44], 4
mov eax, edi
sub eax, ecx
sub eax, esi
mov dword [esp + 0x74], eax
lea edx, [ecx + eax]
mov cl, byte [esp + 0x3b]
mov edi, dword [esp + 0x3c]
test cl, cl
jne 0x529c2e
lea eax, [edx + esi]
lea eax, [edi + eax*2]
cmp dword [ebp + 0x14], eax
jae 0x529bd6
mov ax, word [0x62e6e8]
lea edi, [edi + edx*2]
mov byte [esp + 0x3b], 1
mov dword [esp + 0x3c], edi
mov word [esp + 0x42], ax
jmp 0x52a060
mov eax, dword [esp + 0x44]
test al, 1
je 0x529be5
mov eax, 0x2d
jmp 0x529bee
test al, 2
je 0x529bfc
mov eax, 0x2b
mov word [ebx], ax
add ebx, 2
mov eax, dword [esp + 0x44]
mov dword [esp + 0x48], ebx
lea esp, [esp]
test al, 4
je 0x529c2e
mov eax, dword [esp + 0x74]
test eax, eax
je 0x529c26
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 [esp + 0x3c]
mov eax, dword [esp + 0x74]
lea ebx, [ebx + eax*2]
lea edi, [edi + edx*2]
jmp 0x529c39
lea edi, [edi + edx*2]
mov dword [esp + 0x3c], edi
test cl, cl
jne 0x529c69
push ebx
push esi
push dword [esp + 0x68]
call sym.SystemInformer.exe_PhZeroExtendToUtf16Buffer
lea eax, [esi + esi]
add edi, eax
lea ebx, [ebx + esi*2]
mov ax, word [0x62e6e8]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x3c], edi
mov word [esp + 0x42], ax
jmp 0x52a060
mov edi, dword [esp + 0x3c]
mov ax, word [0x62e6e8]
mov word [esp + 0x42], ax
jmp 0x52a060
mov eax, dword [esp + 0x68]
xor edi, edi
mov esi, dword [esi + 0x10]
mov dword [esp + 0x90], esi
mov dword [esp + 0x98], edi
mov edx, dword [eax + 0x14]
mov eax, edx
mov ecx, edx
mov dword [esp + 0x58], edi
and eax, 0x7fffffff
and ecx, 0x80000000
or esi, edx
mov dword [esp + 0x94], eax
fild qword [esp + 0x90]
mov dword [esp + 0x9c], ecx
fild qword [esp + 0x98]
fchs
faddp st(1)
jne 0x529d18
cmp byte [esp + 0x3b], 0
fstp st(0)
mov edi, dword [esp + 0x3c]
fstp st(1)
fstp st(0)
jne 0x529d05
lea eax, ds:[edi + 2]
cmp dword [ebp + 0x14], eax
jae 0x529cfd
add ebx, 2
mov byte [esp + 0x3b], 1
add edi, 2
mov dword [esp + 0x48], ebx
mov dword [esp + 0x3c], edi
jmp 0x52a060
mov eax, 0x30
mov word [ebx], ax
add ebx, 2
add edi, 2
mov dword [esp + 0x48], ebx
mov dword [esp + 0x3c], edi
jmp 0x52a060
mov edx, dword [esp + 0x50]
mov esi, dword [esp + 0x68]
test edx, 0x100
je 0x529d2e
movzx ecx, byte [esi + 0xa]
jmp 0x529d34
mov ecx, dword [0x631938]
fcomi st(2)
jb 0x529d4f
cmp edi, 7
jae 0x529d4b
lea ecx, [ecx]
cmp edi, ecx
jae 0x529d4b
fmul st(1)
inc edi
fcomi st(2)
jae 0x529d38
mov dword [esp + 0x58], edi
fstp st(2)
fstp st(0)
test dl, 0x40
je 0x529d5e
movzx eax, word [esi + 4]
jmp 0x529d63
mov eax, 2
movzx edx, ax
lea esi, [esp + 0xb9]
cmp edx, 0xa2
mov dword [esp + 0x60], 0
mov eax, 0xa2
mov ecx, 0x1804b
cmova edx, eax
sub esp, 0x10
mov eax, esi
fstp qword [esp + 8]
push eax
call fcn.005723c0
test al, al
jne 0x529da6
xor dh, dh
mov byte [esp + 0xb9], dh
jmp 0x529de3
cmp dword [0x6355f4], 0
mov dh, byte [esp + 0xb9]
je 0x529de3
lea ecx, ds:[esp + 0xb9]
test dh, dh
je 0x529de3
mov al, dh
cmp al, 0x2e
je 0x529dd4
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x529dc6
jmp 0x529de3
mov ax, word [0x62e688]
mov byte [ecx], al
mov dh, byte [esp + 0xb9]
mov cl, dh
lea eax, [esp + 0xb9]
test cl, cl
je 0x529e14
mov bx, word [0x62e688]
mov dl, cl
lea esp, [esp]
mov cl, dl
cmp dl, bl
je 0x529e10
mov cl, byte [eax + 1]
inc eax
mov dl, cl
test cl, cl
jne 0x529e00
mov ebx, dword [esp + 0x48]
inc eax
test cl, cl
je 0x529e7c
mov cl, byte [eax]
test cl, cl
je 0x529e32
nop
cmp cl, 0x65
je 0x529e32
cmp cl, 0x45
je 0x529e32
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x529e20
mov cl, byte ds:[eax - 1]
mov dword [esp + 0x4c], eax
dec eax
mov byte [esp + 0x42], cl
cmp cl, 0x30
jne 0x529e52
mov dl, byte [eax - 1]
dec eax
mov byte [esp + 0x42], dl
cmp dl, 0x30
je 0x529e45
mov dx, word [0x62e688]
lea ecx, [eax - 1]
cmp byte [esp + 0x42], dl
mov edx, dword [esp + 0x4c]
cmovne ecx, eax
mov al, byte [edx]
lea ecx, [ecx + 1]
mov byte [ecx], al
lea edx, [edx + 1]
test al, al
jne 0x529e67
mov dh, byte [esp + 0xb9]
lea edi, [esp + 0xb9]
lea ecx, [edi + 1]
mov al, byte [edi]
inc edi
test al, al
jne 0x529e86
sub edi, ecx
mov dword [esp + 0x4c], edi
cmp dh, 0x2d
jne 0x529eac
dec edi
mov dword [esp + 0x60], 1
lea esi, [esp + 0xba]
mov dword [esp + 0x4c], edi
mov al, byte [esi]
mov ecx, esi
sub al, 0x30
mov dword [esp + 0x54], esi
cmp al, 0xa
jae 0x529ece
lea ebx, [ebx]
mov al, byte [ecx + 1]
inc ecx
sub al, 0x30
cmp al, 0xa
jb 0x529ec0
mov dword [esp + 0x54], ecx
mov eax, ecx
sub eax, esi
mov dword [esp + 0x44], eax
lea edx, [eax + 2]
mov dword [esp + 0x48], edx
je 0x529ef1
mov eax, 0xaaaaaaab
mul edx
mov eax, edx
mov edx, dword [esp + 0x48]
shr eax, 1
dec eax
jmp 0x529ef3
xor eax, eax
mov cx, word [0x62e6e8]
mov dword [esp + 0x50], eax
add eax, edi
add eax, eax
mov word [esp + 0x42], cx
cmp byte [esp + 0x3b], 0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x48], eax
jne 0x529f33
add eax, 2
cmp dword [esp + 0x60], 0
cmove eax, dword [esp + 0x48]
add eax, dword [esp + 0x3c]
cmp dword [ebp + 0x14], eax
jae 0x529f33
mov byte [esp + 0x3b], 1
jmp 0x529fac
mov ecx, dword [esp + 0x44]
mov eax, edx
xor edx, edx
div dword [esp + 0x78]
cmp byte [esp + 0x3b], 0
jne 0x529fa8
cmp dword [esp + 0x60], 0
je 0x529f58
mov eax, 0x2d
mov word [ebx], ax
add ebx, 2
mov eax, dword ds:[esp + 0x44]
test eax, eax
je 0x52a00c
mov di, word [esp + 0x42]
lea ecx, [ecx]
movsx ax, byte ds:[esi]
dec ecx
inc esi
mov word [ebx], ax
mov eax, edx
add ebx, 2
dec edx
test eax, eax
jne 0x529f9d
test ecx, ecx
je 0x529fa4
mov word [ebx], di
dec ecx
movsx ax, byte [esi]
mov edx, 1
mov word [ebx + 2], ax
add ebx, 4
inc esi
lea ecx, [ecx]
test ecx, ecx
jne 0x529f70
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x60], 0
je 0x529fbc
add dword [esp + 0x3c], 2
add eax, dword [esp + 0x50]
mov edx, dword [esp + 0x3c]
sub edi, dword [esp + 0x44]
cmp byte [esp + 0x3b], 0
lea esi, [edx + eax*2]
mov dword [esp + 0x4c], esi
jne 0x52a036
push ebx
push edi
push ecx
call sym.SystemInformer.exe_PhZeroExtendToUtf16Buffer
lea esi, ds:[esi + edi*2]
mov dword [esp + 0x4c], esi
lea ebx, [ebx + edi*2]
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x4c]
mov eax, dword [esi*8 + 0x6310b0]
add eax, 2
add eax, edi
cmp dword [ebp + 0x14], eax
jae 0x52a012
mov byte [esp + 0x3b], 1
jmp 0x52a03e
mov ecx, dword [esp + 0x54]
jmp 0x529fb0
mov eax, 0x20
mov word [ebx], ax
lea eax, [ebx + 2]
push dword [esi*8 + 0x6310b0]
push dword [esi*8 + 0x6310b4]
push eax
call fcn.005831c0
add esp, 0xc
jmp 0x52a03e
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esi*8 + 0x6310b0]
add edi, 2
lea eax, [ecx + 2]
shr eax, 1
add edi, ecx
mov dword [esp + 0x3c], edi
lea ebx, [ebx + eax*2]
mov dword [esp + 0x48], ebx
jmp 0x52a060
fstp st(1)
fstp st(0)
mov eax, dword [esp + 0x68]
mov ecx, edi
sub ecx, dword [esp + 0xb0]
mov edx, dword [eax]
test edx, 0xc0000000
je 0x52a128
movzx esi, word [eax + 6]
add esi, esi
cmp ecx, esi
jae 0x52a128
sub esi, ecx
cmp byte [esp + 0x3b], 0
jne 0x52a117
lea eax, [esi + edi]
cmp dword [ebp + 0x14], eax
jae 0x52a0a5
mov byte [esp + 0x3b], 1
jmp 0x52a117
test dl, dl
jns 0x52a0b3
mov eax, dword [esp + 0x68]
movzx eax, word [eax + 8]
jmp 0x52a0b8
mov eax, 0x20
mov edi, esi
mov dword [esp + 0x58], eax
shr edi, 1
test edx, edx
jns 0x52a0ce
test edi, edi
je 0x52a113
mov ecx, edi
mov edi, ebx
jmp 0x52a100
mov eax, ecx
mov edx, ebx
and eax, 0xfffffffe
sub edx, eax
push ecx
push edx
lfence
lea eax, [edx + edi*2]
mov dword [esp + 0xb8], edx
push eax
call fcn.005831c0
add esp, 0xc
test edi, edi
je 0x52a113
mov eax, dword [esp + 0x58]
mov ecx, edi
mov edi, dword [esp + 0xb0]
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 [esp + 0x3c]
mov eax, esi
shr eax, 1
add edi, esi
mov dword [esp + 0x3c], edi
lea ebx, [ebx + eax*2]
mov dword [esp + 0x48], ebx
mov ecx, dword ds:[ebp + 0xc]
fld qword [esp + 0xa0]
fld qword [esp + 0xa8]
test ecx, ecx
jne 0x5291fa
mov edx, dword [ebp + 0x14]
fstp st(1)
fstp st(0)
mov cl, byte [esp + 0x3b]
test cl, cl
jne 0x52a160
lea eax, [edi + 2]
cmp edx, eax
jae 0x52a1a3
mov cl, 1
mov eax, dword [esp + 0x88]
test eax, eax
je 0x52a174
test edx, edx
je 0x52a174
xor edx, edx
mov word [eax], dx
mov edx, dword [esp + 0x8c]
test edx, edx
je 0x52a184
lea eax, [edi + 2]
mov dword [edx], eax
test cl, cl
mov ecx, dword [esp + 0x4bc]
pop edi
pop esi
sete al
pop ebx
xor ecx, esp
call fcn.0057fcaf
mov esp, ebp
pop ebp
ret 0x14
xor eax, eax
mov word [ebx], ax
jmp 0x52a174