Function at 0x502a70
Capabilities:
Get geographical location
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x865d3f
mov eax, dword fs:[0]
push eax
sub esp, 0xb0
mov eax, dword [0x8ce6f4]
xor eax, esp
mov dword [esp + 0xa8], eax
push ebx
push esi
push edi
mov eax, dword [0x8ce6f4]
xor eax, esp
push eax
lea eax, [esp + 0xc0]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebx + 0x264]
xor edi, edi
mov dword [esp + 0x28], ebx
cmp eax, edi
je 0x502ad0
mov dword [ebx + 0x264], edi
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
push 0x24
call fcn.007c8529
add esp, 4
mov dword [esp + 0x4c], eax
mov dword [esp + 0xc8], edi
cmp eax, edi
je 0x502af4
push edi
push edi
mov ecx, eax
call fcn.005d19c0
jmp 0x502af6
xor eax, eax
mov dword [esp + 0xc8], 0xffffffff
cmp eax, edi
je 0x502b0a
lea esi, [eax + 0xc]
jmp 0x502b0c
xor esi, esi
cmp dword [ebx + 0x264], esi
je 0x502b38
cmp esi, edi
je 0x502b20
mov eax, dword [esi]
mov ecx, dword [eax + 4]
push esi
call ecx
mov eax, dword [ebx + 0x264]
cmp eax, edi
je 0x502b32
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov dword [ebx + 0x264], esi
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], 0xa
xor ecx, ecx
mov dword [esp + 0xc8], 1
mov dword [esp + 0x10], ecx
mov eax, dword [ebx + 0x114]
mov byte [esp + 0xc8], 2
cmp eax, edi
je 0x502c7e
mov ecx, dword [eax]
lea edx, [esp + 0x10]
push edx
push eax
mov eax, dword [ecx + 0x14]
call eax
test eax, eax
js 0x502c78
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
push edi
lea edx, [esp + 0x18]
push edx
push 1
push eax
mov eax, dword [ecx + 0xc]
mov byte [esp + 0xd8], 3
call eax
test eax, eax
jne 0x502c60
jmp 0x502bc0
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x38]
lea ecx, [esp + 0x34]
call fcn.005dfd30
mov edi, dword [esp + 0x44]
mov ecx, dword [edi]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x30], ecx
mov dword [esp + 0x60], edi
mov byte [esp + 0xc8], 4
mov dword [edi + 8], esi
test esi, esi
je 0x502bfa
mov edx, dword [esi]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x44], ecx
mov dword [edi + 4], ebx
mov dword [edi], 0
mov eax, dword [esp + 0x38]
inc dword [esp + 0x3c]
mov byte [esp + 0xc8], 3
test eax, eax
je 0x502c23
mov dword [eax], edi
jmp 0x502c27
mov dword [esp + 0x34], edi
mov eax, dword [esp + 0x14]
mov dword [esp + 0x38], edi
test eax, eax
je 0x502c43
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
push 0
lea edx, [esp + 0x18]
push edx
push 1
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
je 0x502bc0
mov eax, dword [esp + 0x14]
mov byte [esp + 0xc8], 2
test eax, eax
je 0x502c78
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ecx, dword [esp + 0x10]
xor edi, edi
mov byte [esp + 0xc8], 1
cmp ecx, edi
je 0x502c92
mov eax, dword [ecx]
push ecx
mov ecx, dword [eax + 8]
call ecx
mov ebx, dword [esp + 0x34]
cmp ebx, edi
je 0x502d9e
mov edi, edi
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x264]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 0xc]
call eax
test eax, eax
jne 0x502d9c
test ebx, ebx
setne al
test eax, eax
je 0x502e15
mov ecx, dword [ebx + 8]
mov ebx, dword [ebx]
xor eax, eax
mov dword [esp + 0x10], eax
test ecx, ecx
je 0x502ceb
mov edx, dword [ecx]
lea eax, [esp + 0x10]
push eax
push 0x40cba0
push ecx
mov ecx, dword [edx]
call ecx
mov eax, dword [esp + 0x10]
mov byte [esp + 0xc8], 5
test eax, eax
jne 0x502d04
mov byte [esp + 0xc8], 1
jmp 0x502d94
mov edx, dword [eax]
push eax
mov eax, dword [edx + 0xc]
xor esi, esi
call eax
mov edi, eax
test edi, edi
je 0x502d7c
jmp 0x502d20
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
lea edx, [esp + 0x14]
push edx
lea edx, [esp + 0x50]
push edx
push esi
push eax
mov eax, dword [ecx + 0x10]
mov byte [esp + 0xd8], 6
call eax
test eax, eax
js 0x502d6c
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x264]
mov ecx, dword [eax]
push edx
mov edx, dword [esp + 0x54]
push edx
mov edx, dword [esp + 0x54]
push edx
push eax
mov eax, dword [ecx + 0x18]
call eax
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
inc esi
cmp esi, edi
jb 0x502d20
mov eax, dword [esp + 0x10]
mov byte [esp + 0xc8], 1
test eax, eax
je 0x502d94
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
test ebx, ebx
jne 0x502ca0
xor edi, edi
mov ebx, dword [esp + 0x34]
cmp ebx, edi
je 0x503058
lea ebx, [ebx]
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x264]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
push eax
call edx
test eax, eax
jne 0x503058
test ebx, ebx
setne al
test eax, eax
je 0x502e15
mov eax, dword [ebx + 8]
mov ebx, dword [ebx]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], 0
test eax, eax
je 0x502df9
mov ecx, dword [eax]
lea edx, [esp + 0x18]
push edx
push 0x40cca8
push eax
mov eax, dword [ecx]
call eax
cmp dword [esp + 0x18], 0
mov byte [esp + 0xc8], 7
jne 0x502e1f
mov byte [esp + 0xc8], 1
jmp 0x503050
push 0x80004005
call fcn.004a8210
push 3
lea ecx, [esp + 0x24]
push ecx
push 0x59
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x34]
push eax
call fcn.005c7c50
add esp, 8
mov esi, dword [eax]
mov byte [esp + 0xc8], 8
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x502e15
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x10], edi
mov byte [esp + 0xc8], 9
test esi, esi
je 0x502e9d
test esi, 0xffff0000
jne 0x502e9d
movzx esi, si
push esi
call fcn.007cfe78
test eax, eax
je 0x502eab
push esi
push eax
lea ecx, [esp + 0x18]
call fcn.004b1230
jmp 0x502ea7
push esi
lea ecx, [esp + 0x14]
call fcn.004b2120
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
mov byte [esp + 0xc8], 0xb
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x502ed3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [edi - 0xc], 3
jge 0x502eed
push 3
push 0x40d418
lea ecx, [esp + 0x18]
call fcn.004b1190
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
push 0
push eax
call edx
mov esi, 1
mov dword [esp + 0x5c], eax
mov dword [esp + 0x2c], esi
cmp eax, esi
jb 0x503014
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x10]
push esi
push 0
push eax
call edx
mov ebx, eax
mov eax, 0x17
mov word [esp + 0x8c], ax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x8c]
push edx
push ebx
push eax
mov eax, dword [ecx + 0x18]
call eax
test eax, eax
je 0x503001
cmp dword [edi - 0xc], 0
jl 0x5030d7
mov cl, byte [edi]
mov byte [esp + 0x24], cl
cmp dword [edi - 0xc], 1
jl 0x5030d7
mov dl, byte [edi + 1]
mov byte [esp + 0x25], dl
cmp dword [edi - 0xc], 2
jl 0x5030d7
mov al, byte [edi + 2]
mov cx, word [0x40d414]
mov dl, byte [0x40d416]
xor esi, esi
mov byte [esp + 0x26], al
mov word [esp + 0x1c], cx
mov byte [esp + 0x1e], dl
mov dword [esp + 0x58], esi
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x1c]
push edx
lea edx, [esp + 0x28]
push edx
push ebx
push eax
mov eax, dword [ecx + 0x1c]
mov byte [esp + 0xd8], 0xc
call eax
mov ebx, eax
test ebx, ebx
je 0x502fcb
push esi
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov esi, ebx
mov dword [esp + 0x58], esi
mov edx, dword [esp + 0x97]
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x264]
mov ecx, dword [eax]
push esi
push edx
mov edx, dword [esp + 0x9b]
push edx
push eax
mov eax, dword [ecx + 0x18]
call eax
push esi
mov byte [esp + 0xcc], 0xb
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov esi, dword [esp + 0x2c]
inc esi
mov dword [esp + 0x2c], esi
cmp esi, dword [esp + 0x5c]
jbe 0x502f10
mov ebx, dword [esp + 0x14]
add edi, 0xfffffff0
mov byte [esp + 0xc8], 7
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x503038
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov eax, dword [esp + 0x18]
mov byte [esp + 0xc8], 1
test eax, eax
je 0x503050
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
test ebx, ebx
jne 0x502db0
mov esi, dword [esp + 0x34]
test esi, esi
je 0x50324c
mov bl, 0xd
jmp 0x503070
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x264]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
push eax
call edx
test eax, eax
jne 0x50324c
test esi, esi
setne al
test eax, eax
je 0x502e15
mov eax, dword [esi + 8]
mov esi, dword [esi]
xor ecx, ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ecx
test eax, eax
je 0x5030bf
mov ecx, dword [eax]
lea edx, [esp + 0x10]
push edx
push 0x40c064
push eax
mov eax, dword [ecx]
call eax
mov ecx, dword [esp + 0x10]
mov byte [esp + 0xc8], bl
test ecx, ecx
jne 0x5030e1
mov byte [esp + 0xc8], 1
jmp 0x503244
push 0x80070057
call fcn.004a8210
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 0
mov edx, dword [ecx]
push eax
push ecx
mov ecx, dword [edx + 0x20]
call ecx
test eax, eax
js 0x50322c
mov edi, 1
mov dword [esp + 0x1c], edi
cmp dword [esp + 0x24], edi
jl 0x50322c
fldz
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x4c]
fstp qword [esp + 0x4c]
mov edx, dword [eax]
mov edx, dword [edx + 0x28]
push ecx
push edi
push eax
call edx
test eax, eax
js 0x50321d
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x502e15
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
push edi
lea ecx, [esp + 0x1c]
push 0x8136
push ecx
mov byte [esp + 0xd4], 0xe
call fcn.004b1ce0
add esp, 0xc
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x10]
mov edx, dword [eax]
mov edx, dword [edx + 0x2c]
lea ecx, [esp + 0x20]
push ecx
push edi
push eax
mov byte [esp + 0xd4], 0xf
call edx
test eax, eax
jne 0x5031bd
mov esi, dword [esp + 0x20]
test esi, esi
je 0x5031b2
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x5031a3
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [esp + 0x20]
call fcn.004a8db0
mov eax, dword [esp + 0x28]
fld qword [esp + 0x4c]
mov esi, dword [eax + 0x264]
fmul qword [0x409f80]
mov edi, dword [esp + 0x18]
mov ebx, dword [esi]
push edi
call fcn.00802dd6
push edx
push eax
mov eax, dword [ebx + 0x18]
push esi
call eax
mov ecx, dword [esp + 0x20]
push ecx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov bl, 0xd
lea eax, [edi - 0x10]
mov byte [esp + 0xc8], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x503215
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
inc edi
mov dword [esp + 0x1c], edi
cmp edi, dword [esp + 0x24]
jle 0x503111
mov eax, dword [esp + 0x10]
mov byte [esp + 0xc8], 1
test eax, eax
je 0x503244
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
test esi, esi
jne 0x503070
mov edi, dword [esp + 0x34]
test edi, edi
je 0x503728
jmp 0x503260
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x264]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
push eax
call edx
test eax, eax
jne 0x503728
test edi, edi
setne al
test eax, eax
je 0x502e15
mov esi, dword [edi + 8]
mov edi, dword [edi]
lea eax, [esp + 0x8c]
push esi
push eax
mov dword [esp + 0x1c], edi
call fcn.005c2e50
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0xb0], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0xb4], edx
mov edx, dword [eax + 0xc]
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xbc], edx
add esp, 8
mov eax, 0x10
mov ecx, 0x40778c
lea edx, [esp + 0xa8]
lea esp, [esp]
mov ebx, dword [edx]
cmp ebx, dword [ecx]
jne 0x5032f6
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x5032e0
jmp 0x50332e
movzx ebx, byte [ecx]
movzx eax, byte [edx]
sub eax, ebx
jne 0x503322
movzx eax, byte [edx + 1]
movzx ebx, byte [ecx + 1]
sub eax, ebx
jne 0x503322
movzx eax, byte [edx + 2]
movzx ebx, byte [ecx + 2]
sub eax, ebx
jne 0x503322
movzx eax, byte [edx + 3]
movzx ecx, byte [ecx + 3]
sub eax, ecx
sar eax, 0x1f
or eax, 1
jne 0x503720
xor eax, eax
mov dword [esp + 0x1c], eax
mov byte [esp + 0xc8], 0x10
test esi, esi
je 0x50370c
mov edx, dword [esi]
mov ecx, dword [edx + 0x28]
lea eax, [esp + 0x1c]
push eax
push esi
call ecx
test eax, eax
js 0x503708
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
mov edx, dword [edx + 0xc]
push 0
lea ecx, [esp + 0x14]
push ecx
push 1
push eax
mov byte [esp + 0xd8], 0x11
call edx
test eax, eax
jne 0x5036f0
jmp 0x503390
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x264]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
push eax
call edx
test eax, eax
jne 0x5036f0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
test eax, eax
je 0x5033c7
mov ecx, dword [eax]
lea edx, [esp + 0x20]
push edx
push 0x407c20
push eax
mov eax, dword [ecx]
call eax
cmp dword [esp + 0x20], 0
mov byte [esp + 0xc8], 0x12
je 0x50369f
mov esi, 1
mov dword [esp + 0x30], esi
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x502e15
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
lea ecx, [esp + 0x64]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov ebx, dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea edx, [esp + 0x64]
push edx
mov byte [esp + 0xcc], 0x14
call ebx
push esi
lea eax, [esp + 0x1c]
push 0x40d3fc
push eax
call fcn.004aa600
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x24]
mov ecx, dword [eax]
add esp, 0xc
push 0
lea edx, [esp + 0x68]
push edx
push edi
push eax
mov eax, dword [ecx + 0xc]
call eax
lea ecx, [esp + 0x64]
push ecx
test eax, eax
jne 0x50366c
lea ecx, [esp + 0x60]
call fcn.004f9190
mov eax, dword [eax]
lea edx, [esp + 0x4c]
push edx
push 2
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x6c]
push edx
push 2
push ecx
lea edx, [esp + 0x90]
push edx
push 2
push ecx
lea edx, [esp + 0x7c]
push edx
push 0x40d3dc
push eax
call fcn.00803d5e
add esp, 0x30
cmp eax, 7
mov eax, dword [esp + 0x5c]
setne bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x5034c2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x503670
call fcn.007cff5d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x502e15
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
push esi
lea ecx, [esp + 0x30]
push 0x8136
push ecx
mov byte [esp + 0xd4], 0x15
call fcn.004b1ce0
mov edi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
add esp, 0xc
lea edx, [esp + 0x64]
push edx
call edi
push 4
push 0x40d3d0
lea ecx, [esp + 0x20]
call fcn.004a9f20
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
push 0
lea edx, [esp + 0x68]
push edx
mov edx, dword [esp + 0x20]
push edx
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jne 0x5035b9
lea ecx, [esp + 0x7c]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantClear]
push 8
push 0
lea edx, [esp + 0x6c]
push edx
lea eax, [esp + 0x88]
push eax
mov byte [esp + 0xd8], 0x16
call dword [sym.imp.OLEAUT32.dll_VariantTimeToDosDateTime]
test eax, eax
js 0x50380a
mov edx, dword [esp + 0x84]
test edx, edx
jne 0x503583
xor eax, eax
jmp 0x50359f
mov eax, edx
lea esi, [eax + 2]
jmp 0x503590
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x503590
sub eax, esi
sar eax, 1
push eax
push edx
lea ecx, [esp + 0x34]
call fcn.004a8db0
lea ecx, [esp + 0x7c]
push ecx
mov byte [esp + 0xcc], 0x15
call edi
mov eax, dword [esp + 0x28]
mov esi, dword [eax + 0x264]
mov eax, dword [esp + 0x58]
mov edx, eax
mov edi, dword [esp + 0x2c]
shl edx, 4
sub edx, eax
mov eax, dword [esp + 0x78]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x60]
mov ecx, eax
mov ebx, dword [esi]
shl ecx, 4
sub ecx, eax
lea eax, [edx + ecx*4]
imul eax, eax, 0x3e8
add eax, dword [esp + 0x4c]
push edi
push 0
cdq
push 0x2710
push edx
push eax
call fcn.00803af0
push edx
push eax
mov eax, dword [ebx + 0x18]
push esi
call eax
lea eax, [edi - 0x10]
mov byte [esp + 0xc8], 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x50362f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x64]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0xc8], 0x12
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x503662
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x30]
inc esi
jmp 0x5033df
call ebx
jmp 0x50367b
lea ecx, [esp + 0x64]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
lea eax, [edi - 0x10]
or ecx, 0xffffffff
lea edx, [eax + 0xc]
mov byte [esp + 0xc8], 0x12
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x50369f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
mov byte [esp + 0xc8], 0x11
test eax, eax
je 0x5036b7
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x10]
test eax, eax
je 0x5036cf
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
push 0
lea edx, [esp + 0x14]
push edx
push 1
push eax
mov eax, dword [ecx + 0xc]
call eax
mov edi, dword [esp + 0x14]
test eax, eax
je 0x503390
mov eax, dword [esp + 0x10]
mov byte [esp + 0xc8], 0x10
test eax, eax
je 0x503708
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x1c]
mov byte [esp + 0xc8], 1
test eax, eax
je 0x503720
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
test edi, edi
jne 0x503260
mov edi, dword [esp + 0x28]
mov eax, dword [edi + 0x264]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x28]
lea esi, [edi + 0x264]
push eax
call edx
call fcn.007c9a2f
mov eax, dword [eax + 4]
cmp byte [eax + 0x1041], 0
je 0x50375d
push esi
lea ecx, [edi + 0x460]
call fcn.00555610
cmp dword [esp + 0x3c], 0
mov dword [esp + 0xc8], 0xffffffff
jbe 0x5037b5
mov edi, 1
mov esi, dword [esp + 0x34]
test esi, esi
je 0x502e15
mov eax, dword [esi]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 8]
test eax, eax
je 0x503795
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x44]
mov dword [esi], eax
sub dword [esp + 0x3c], edi
mov dword [esp + 0x44], esi
jne 0x5037ae
lea ecx, [esp + 0x34]
call fcn.004ed5a0
cmp dword [esp + 0x3c], 0
ja 0x503774
mov eax, dword [esp + 0x40]
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x44], 0
test eax, eax
je 0x5037e6
mov esi, dword [eax]
push eax
call fcn.00803053
add esp, 4
mov eax, esi
test esi, esi
jne 0x5037d5
mov ecx, dword [esp + 0xc0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xa8]
xor ecx, esp
call fcn.0080262b
mov esp, ebp
pop ebp
ret
push eax
call fcn.004a8210
int3