Function at 0x403040
Capabilities:
Delete registry key
Get geographical location
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
mov eax, dword [0x65a000]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [ebp + 0x1c], 8
push ebx
push esi
mov esi, dword [ebp + 0x20]
push edi
push 0
lea ecx, [ebp - 8]
push ecx
push 0
push 0x20006
push 0
push 0
lea eax, [ebp + 8]
cmovae eax, dword [ebp + 8]
push 0
push eax
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 8], 0
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x40388d
cmp dword [esi + 0x14], 8
mov eax, dword [esi + 0x10]
jb 0x40309c
mov ecx, dword [esi]
jmp 0x40309e
mov ecx, esi
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push 0x60e340
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x2c], 8
mov eax, dword [esi + 0x28]
lea ecx, [esi + 0x18]
jb 0x4030d1
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.DEVID
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x44], 8
mov eax, dword [esi + 0x40]
lea ecx, [esi + 0x30]
jb 0x4030fe
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push 0x60e354
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x5c], 8
mov eax, dword [esi + 0x58]
lea ecx, [esi + 0x48]
jb 0x40312b
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.INSTALLDATE
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x74], 8
mov eax, dword [esi + 0x70]
lea ecx, [esi + 0x60]
jb 0x403158
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.ONLINEMODE
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x8c], 8
mov eax, dword [esi + 0x88]
lea ecx, [esi + 0x78]
jb 0x40318b
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.INSTALLFLOW
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0xa4], 8
mov eax, dword [esi + 0xa0]
lea ecx, [esi + 0x90]
jb 0x4031c1
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.SKIPSOFTWARE
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0xbc], 8
mov eax, dword [esi + 0xb8]
lea ecx, [esi + 0xa8]
jb 0x4031f7
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.INSTALLITEM
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0xd4], 8
mov eax, dword [esi + 0xd0]
lea ecx, [esi + 0xc0]
jb 0x40322d
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.RESIDENCE
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0xec], 8
mov eax, dword [esi + 0xe8]
lea ecx, [esi + 0xd8]
jb 0x403263
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.COUNTRY
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x104], 8
mov eax, dword [esi + 0x100]
lea ecx, [esi + 0xf0]
jb 0x403299
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.SCREENSIZE
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x11c], 8
mov eax, dword [esi + 0x118]
lea ecx, [esi + 0x108]
jb 0x4032cf
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.SELECT_METHOD
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x134], 8
mov eax, dword [esi + 0x130]
lea ecx, [esi + 0x120]
jb 0x403305
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.UREG_DONE
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x14c], 8
mov eax, dword [esi + 0x148]
lea ecx, [esi + 0x138]
jb 0x40333b
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.FAILSTEP
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x164], 8
mov eax, dword [esi + 0x160]
lea ecx, [esi + 0x150]
jb 0x403371
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.LANFAIL
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x17c], 8
mov eax, dword [esi + 0x178]
lea ecx, [esi + 0x168]
jb 0x4033a7
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.SYSTEMLOCALE
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x194], 8
mov eax, dword [esi + 0x190]
lea ecx, [esi + 0x180]
jb 0x4033dd
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.UILANGID
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x1ac], 8
mov eax, dword [esi + 0x1a8]
lea ecx, [esi + 0x198]
jb 0x403413
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.DEFAULTUILANGID
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x1c4], 8
mov eax, dword [esi + 0x1c0]
lea ecx, [esi + 0x1b0]
jb 0x403449
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.INTERFACE
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x1dc], 8
mov eax, dword [esi + 0x1d8]
lea ecx, [esi + 0x1c8]
jb 0x40347f
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.WIRELESSMETHOD
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x1f4], 8
mov eax, dword [esi + 0x1f0]
lea ecx, [esi + 0x1e0]
jb 0x4034b5
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.TUTOLASTCALL
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x20c], 8
mov eax, dword [esi + 0x208]
lea ecx, [esi + 0x1f8]
jb 0x4034eb
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.TUTOCOUNTCABLELESS
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x224], 8
mov eax, dword [esi + 0x220]
lea ecx, [esi + 0x210]
jb 0x403521
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.TUTOCOUNTMANUAL
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x23c], 8
mov eax, dword [esi + 0x238]
lea ecx, [esi + 0x228]
jb 0x403557
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.TUTOCOUNTPUSH
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x254], 8
mov eax, dword [esi + 0x250]
lea ecx, [esi + 0x240]
jb 0x40358d
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.TUTOLESS_COUNTCABLELESS_FAIL
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x26c], 8
mov eax, dword [esi + 0x268]
lea ecx, [esi + 0x258]
jb 0x4035c3
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.INSTLANSETUP
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x284], 8
mov eax, dword [esi + 0x280]
lea ecx, [esi + 0x270]
jb 0x4035f9
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.HEADADJUST
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x29c], 8
mov eax, dword [esi + 0x298]
lea ecx, [esi + 0x288]
jb 0x40362f
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.TESTPRINT
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x2b4], 8
mov eax, dword [esi + 0x2b0]
lea ecx, [esi + 0x2a0]
jb 0x403665
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.TUTORETURN
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x2cc], 8
mov eax, dword [esi + 0x2c8]
lea ecx, [esi + 0x2b8]
jb 0x40369b
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.SETUPTIME
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x2e4], 8
mov eax, dword [esi + 0x2e0]
lea ecx, [esi + 0x2d0]
jb 0x4036d1
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.IF_CHANGE
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x2fc], 8
mov eax, dword [esi + 0x2f8]
lea ecx, [esi + 0x2e8]
jb 0x403707
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.IPADDKIND
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x314], 8
mov eax, dword [esi + 0x310]
lea ecx, [esi + 0x300]
jb 0x40373d
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.SERIALHELP
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x32c], 8
mov eax, dword [esi + 0x328]
lea ecx, [esi + 0x318]
jb 0x403773
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.IPADDSEARCH
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x344], 8
mov eax, dword [esi + 0x340]
lea ecx, [esi + 0x330]
jb 0x4037a9
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.IPSEARCHRESULT
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x35c], 8
mov eax, dword [esi + 0x358]
lea ecx, [esi + 0x348]
jb 0x4037df
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.DEFAULTPRINTER
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
cmp dword [esi + 0x38c], 8
mov eax, dword [esi + 0x388]
lea ecx, [esi + 0x378]
jb 0x403811
mov ecx, dword [ecx]
lea eax, [eax*2 + 2]
push eax
push ecx
push 1
push 0
push str.UNLOCKWALL
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
mov eax, dword [esi + 0x3a0]
add esi, 0x390
cmp dword [esi + 0x14], 8
jb 0x403840
mov esi, dword [esi]
lea eax, [eax*2 + 2]
push eax
push esi
push 1
push 0
push str.RESULTNETVIAUSB
push dword [ebp - 8]
call edi
test eax, eax
jne 0x403868
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov bl, 1
jmp 0x40388f
mov eax, dword [ebp - 8]
test eax, eax
je 0x403876
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp + 0x1c], 8
lea eax, [ebp + 8]
cmovae eax, dword [ebp + 8]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
xor bl, bl
cmp dword [ebp + 0x1c], 8
jb 0x4038a0
push dword [ebp + 8]
call fcn.0048166b
add esp, 4
mov ecx, dword [ebp - 4]
pop edi
pop esi
mov al, bl
xor ecx, ebp
pop ebx
call fcn.005a4646
mov esp, ebp
pop ebp
ret 0x1c