Function at 0x402a30
Capabilities:
Check os version
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x56d984
mov eax, dword fs:[0]
push eax
sub esp, 0x618
mov eax, dword [0x5cfff4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
lea ecx, [ebp - 0x624]
call fcn.00415ef2
mov dword [ebp - 4], 0
test esi, esi
jne 0x402a7a
xor eax, eax
jmp 0x402a7d
mov eax, dword [esi + 0x20]
push 0
push 0
lea ecx, [ebp - 0x2a8]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea eax, [ebp - 0x2a8]
push eax
lea ecx, [ebp - 0x5f0]
call fcn.00404c90
push 0xc
mov byte [ebp - 4], 1
call fcn.00407003
mov esi, eax
add esp, 4
mov dword [ebp - 0x5cc], esi
mov byte [ebp - 4], 2
test esi, esi
je 0x402adb
push 0x5b02ac
mov dword [esi + 4], 0
mov dword [esi + 8], 1
call fcn.0054ce60
mov dword [esi], eax
jmp 0x402add
xor esi, esi
mov byte [ebp - 4], 1
mov dword [ebp - 0x5cc], esi
test esi, esi
jne 0x402af5
push 0x8007000e
call fcn.0054ce40
lea eax, [ebp - 0x5cc]
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x5f0]
lea ecx, [ebp - 0x600]
push eax
call fcn.004045d0
add esp, 4
mov byte [ebp - 4], 4
mov eax, dword [eax]
test eax, eax
je 0x402b22
mov eax, dword [eax]
jmp 0x402b24
xor eax, eax
push eax
lea ecx, [ebp - 0x5fc]
call fcn.00404c90
mov ecx, dword [ebp - 0x600]
or ebx, 0xffffffff
mov edi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [ebp - 0x5d0], ecx
test ecx, ecx
je 0x402b9e
mov eax, ebx
lock xadd dword [ecx + 8], eax
dec eax
jne 0x402b94
test ecx, ecx
je 0x402b94
mov eax, dword [ecx]
test eax, eax
je 0x402b6c
push eax
call edi
mov ecx, dword [ebp - 0x5d0]
mov dword [ecx], 0
mov eax, dword [ecx + 4]
test eax, eax
je 0x402b89
push eax
call fcn.00407043
mov ecx, dword [ebp - 0x5d0]
add esp, 4
mov dword [ecx + 4], 0
push 0xc
push ecx
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x600], 0
mov byte [ebp - 4], 7
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x402bdd
mov eax, dword [esi]
test eax, eax
je 0x402bbb
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x402bd2
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
push 0xc
call fcn.00407003
mov esi, eax
add esp, 4
mov dword [ebp - 0x5cc], esi
mov byte [ebp - 4], 8
test esi, esi
je 0x402c13
push 0x5b02bc
mov dword [esi + 4], 0
mov dword [esi + 8], 1
call fcn.0054ce60
mov dword [esi], eax
jmp 0x402c15
xor esi, esi
mov byte [ebp - 4], 7
mov dword [ebp - 0x5cc], esi
test esi, esi
jne 0x402c2d
push 0x8007000e
call fcn.0054ce40
lea eax, [ebp - 0x5cc]
mov byte [ebp - 4], 9
mov edx, dword [ebp - 0x5f0]
lea ecx, [ebp - 0x604]
push eax
call fcn.004045d0
add esp, 4
mov byte [ebp - 4], 0xa
mov eax, dword [eax]
test eax, eax
je 0x402c5a
mov eax, dword [eax]
jmp 0x402c5c
xor eax, eax
push eax
lea ecx, [ebp - 0x5f8]
call fcn.00404c90
mov ecx, dword [ebp - 0x604]
mov dword [ebp - 0x5d0], ecx
test ecx, ecx
je 0x402ccd
mov eax, ebx
lock xadd dword [ecx + 8], eax
dec eax
jne 0x402cc3
test ecx, ecx
je 0x402cc3
mov eax, dword [ecx]
test eax, eax
je 0x402c9b
push eax
call edi
mov ecx, dword [ebp - 0x5d0]
mov dword [ecx], 0
mov eax, dword [ecx + 4]
test eax, eax
je 0x402cb8
push eax
call fcn.00407043
mov ecx, dword [ebp - 0x5d0]
add esp, 4
mov dword [ecx + 4], 0
push 0xc
push ecx
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x604], 0
mov byte [ebp - 4], 0xd
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x402d0c
mov eax, dword [esi]
test eax, eax
je 0x402cea
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x402d01
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
push 0xc
call fcn.00407003
mov esi, eax
add esp, 4
mov dword [ebp - 0x5cc], esi
mov byte [ebp - 4], 0xe
test esi, esi
je 0x402d42
push 0x5b02cc
mov dword [esi + 4], 0
mov dword [esi + 8], 1
call fcn.0054ce60
mov dword [esi], eax
jmp 0x402d44
xor esi, esi
mov byte [ebp - 4], 0xd
mov dword [ebp - 0x5cc], esi
test esi, esi
jne 0x402d5c
push 0x8007000e
call fcn.0054ce40
lea eax, [ebp - 0x5cc]
mov byte [ebp - 4], 0xf
mov edx, dword [ebp - 0x5f0]
lea ecx, [ebp - 0x608]
push eax
call fcn.004045d0
add esp, 4
mov byte [ebp - 4], 0x10
mov eax, dword [eax]
test eax, eax
je 0x402d89
mov eax, dword [eax]
jmp 0x402d8b
xor eax, eax
push eax
lea ecx, [ebp - 0x5f4]
call fcn.00404c90
mov ecx, dword [ebp - 0x608]
mov dword [ebp - 0x5d0], ecx
test ecx, ecx
je 0x402dfc
mov eax, ebx
lock xadd dword [ecx + 8], eax
dec eax
jne 0x402df2
test ecx, ecx
je 0x402df2
mov eax, dword [ecx]
test eax, eax
je 0x402dca
push eax
call edi
mov ecx, dword [ebp - 0x5d0]
mov dword [ecx], 0
mov eax, dword [ecx + 4]
test eax, eax
je 0x402de7
push eax
call fcn.00407043
mov ecx, dword [ebp - 0x5d0]
add esp, 4
mov dword [ecx + 4], 0
push 0xc
push ecx
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x608], 0
mov byte [ebp - 4], 0x13
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x402e3b
mov eax, dword [esi]
test eax, eax
je 0x402e19
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x402e30
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
push 0
push dword [ebp - 0x5fc]
lea ecx, [ebp - 0x624]
call fcn.00416183
test eax, eax
je 0x4030fb
push str..lnk
lea ecx, [ebp - 0x5e8]
call fcn.00404280
push 0x5b02ec
lea ecx, [ebp - 0x5d8]
mov byte [ebp - 4], 0x14
call fcn.00404280
push 0x5b02e0
lea ecx, [ebp - 0x5dc]
mov byte [ebp - 4], 0x15
call fcn.00404280
lea eax, [ebp - 0x5dc]
mov byte [ebp - 4], 0x16
mov edx, dword [ebp - 0x5f0]
lea ecx, [ebp - 0x5e0]
push eax
call fcn.004045d0
add esp, 4
lea ecx, [ebp - 0x5d8]
mov byte [ebp - 4], 0x17
push ecx
lea ecx, [ebp - 0x5e4]
push ecx
mov ecx, eax
call fcn.00404210
lea ecx, [ebp - 0x5e8]
mov byte [ebp - 4], 0x18
push ecx
lea ecx, [ebp - 0x5d0]
push ecx
mov ecx, eax
call fcn.00404210
mov byte [ebp - 4], 0x19
mov eax, dword [eax]
test eax, eax
je 0x402eed
mov eax, dword [eax]
jmp 0x402eef
xor eax, eax
push eax
lea ecx, [ebp - 0x5cc]
call fcn.00404c90
mov esi, dword [ebp - 0x5d0]
test esi, esi
je 0x402f4e
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x402f44
test esi, esi
je 0x402f44
mov eax, dword [esi]
test eax, eax
je 0x402f22
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x402f39
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x5d0], 0
mov esi, dword [ebp - 0x5e4]
test esi, esi
je 0x402fa1
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x402f97
test esi, esi
je 0x402f97
mov eax, dword [esi]
test eax, eax
je 0x402f75
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x402f8c
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x5e4], 0
mov esi, dword [ebp - 0x5e0]
test esi, esi
je 0x402ff4
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x402fea
test esi, esi
je 0x402fea
mov eax, dword [esi]
test eax, eax
je 0x402fc8
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x402fdf
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x5e0], 0
mov esi, dword [ebp - 0x5dc]
test esi, esi
je 0x403039
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x403039
mov eax, dword [esi]
test eax, eax
je 0x403017
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40302e
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov esi, dword [ebp - 0x5d8]
test esi, esi
je 0x40307e
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x40307e
mov eax, dword [esi]
test eax, eax
je 0x40305c
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x403073
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov byte [ebp - 4], 0x20
mov esi, dword [ebp - 0x5e8]
test esi, esi
je 0x4030c7
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x4030c7
mov eax, dword [esi]
test eax, eax
je 0x4030a5
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4030bc
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
push 0
push dword [ebp - 0x5cc]
push dword [ebp - 0x5fc]
call fcn.00417029
mov byte [ebp - 4], 0x13
mov eax, ebx
mov edx, dword [ebp - 0x5cc]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4030fb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
push dword [ebp - 0x5f8]
lea ecx, [ebp - 0x624]
call fcn.00416183
test eax, eax
je 0x4033bb
push str..lnk
lea ecx, [ebp - 0x5dc]
call fcn.00404280
push 0x5b02ec
lea ecx, [ebp - 0x5e0]
mov byte [ebp - 4], 0x21
call fcn.00404280
push 0x5b02f8
lea ecx, [ebp - 0x5e4]
mov byte [ebp - 4], 0x22
call fcn.00404280
lea eax, [ebp - 0x5e4]
mov byte [ebp - 4], 0x23
mov edx, dword [ebp - 0x5f0]
lea ecx, [ebp - 0x5d0]
push eax
call fcn.004045d0
add esp, 4
lea ecx, [ebp - 0x5e0]
mov byte [ebp - 4], 0x24
push ecx
lea ecx, [ebp - 0x5e8]
push ecx
mov ecx, eax
call fcn.00404210
lea ecx, [ebp - 0x5dc]
mov byte [ebp - 4], 0x25
push ecx
lea ecx, [ebp - 0x5cc]
push ecx
mov ecx, eax
call fcn.00404210
mov byte [ebp - 4], 0x26
mov eax, dword [eax]
test eax, eax
je 0x4031ad
mov eax, dword [eax]
jmp 0x4031af
xor eax, eax
push eax
lea ecx, [ebp - 0x5d8]
call fcn.00404c90
mov esi, dword [ebp - 0x5cc]
test esi, esi
je 0x40320e
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x403204
test esi, esi
je 0x403204
mov eax, dword [esi]
test eax, eax
je 0x4031e2
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4031f9
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x5cc], 0
mov esi, dword [ebp - 0x5e8]
test esi, esi
je 0x403261
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x403257
test esi, esi
je 0x403257
mov eax, dword [esi]
test eax, eax
je 0x403235
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40324c
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x5e8], 0
mov esi, dword [ebp - 0x5d0]
test esi, esi
je 0x4032b4
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x4032aa
test esi, esi
je 0x4032aa
mov eax, dword [esi]
test eax, eax
je 0x403288
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40329f
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x5d0], 0
mov esi, dword [ebp - 0x5e4]
test esi, esi
je 0x4032f9
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x4032f9
mov eax, dword [esi]
test eax, eax
je 0x4032d7
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4032ee
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov esi, dword [ebp - 0x5e0]
test esi, esi
je 0x40333e
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x40333e
mov eax, dword [esi]
test eax, eax
je 0x40331c
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x403333
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov byte [ebp - 4], 0x2d
mov esi, dword [ebp - 0x5dc]
test esi, esi
je 0x403387
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x403387
mov eax, dword [esi]
test eax, eax
je 0x403365
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40337c
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
push 0
push dword [ebp - 0x5d8]
push dword [ebp - 0x5f8]
call fcn.00417029
mov byte [ebp - 4], 0x13
mov eax, ebx
mov edx, dword [ebp - 0x5d8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4033bb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
push dword [ebp - 0x5f4]
lea ecx, [ebp - 0x624]
call fcn.00416183
test eax, eax
je 0x40367b
push str..lnk
lea ecx, [ebp - 0x5dc]
call fcn.00404280
push 0x5b02ec
lea ecx, [ebp - 0x5e0]
mov byte [ebp - 4], 0x2e
call fcn.00404280
push 0x5b0304
lea ecx, [ebp - 0x5e4]
mov byte [ebp - 4], 0x2f
call fcn.00404280
lea eax, [ebp - 0x5e4]
mov byte [ebp - 4], 0x30
mov edx, dword [ebp - 0x5f0]
lea ecx, [ebp - 0x5d0]
push eax
call fcn.004045d0
add esp, 4
lea ecx, [ebp - 0x5e0]
mov byte [ebp - 4], 0x31
push ecx
lea ecx, [ebp - 0x5e8]
push ecx
mov ecx, eax
call fcn.00404210
lea ecx, [ebp - 0x5dc]
mov byte [ebp - 4], 0x32
push ecx
lea ecx, [ebp - 0x5cc]
push ecx
mov ecx, eax
call fcn.00404210
mov byte [ebp - 4], 0x33
mov eax, dword [eax]
test eax, eax
je 0x40346d
mov eax, dword [eax]
jmp 0x40346f
xor eax, eax
push eax
lea ecx, [ebp - 0x5d8]
call fcn.00404c90
mov esi, dword [ebp - 0x5cc]
test esi, esi
je 0x4034ce
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x4034c4
test esi, esi
je 0x4034c4
mov eax, dword [esi]
test eax, eax
je 0x4034a2
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4034b9
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x5cc], 0
mov esi, dword [ebp - 0x5e8]
test esi, esi
je 0x403521
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x403517
test esi, esi
je 0x403517
mov eax, dword [esi]
test eax, eax
je 0x4034f5
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40350c
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x5e8], 0
mov esi, dword [ebp - 0x5d0]
test esi, esi
je 0x403574
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x40356a
test esi, esi
je 0x40356a
mov eax, dword [esi]
test eax, eax
je 0x403548
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40355f
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov dword [ebp - 0x5d0], 0
mov esi, dword [ebp - 0x5e4]
test esi, esi
je 0x4035b9
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x4035b9
mov eax, dword [esi]
test eax, eax
je 0x403597
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4035ae
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov esi, dword [ebp - 0x5e0]
test esi, esi
je 0x4035fe
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x4035fe
mov eax, dword [esi]
test eax, eax
je 0x4035dc
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x4035f3
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
mov byte [ebp - 4], 0x3a
mov esi, dword [ebp - 0x5dc]
test esi, esi
je 0x403647
mov eax, ebx
lock xadd dword [esi + 8], eax
dec eax
jne 0x403647
mov eax, dword [esi]
test eax, eax
je 0x403625
push eax
call edi
mov dword [esi], 0
mov eax, dword [esi + 4]
test eax, eax
je 0x40363c
push eax
call fcn.00407043
add esp, 4
mov dword [esi + 4], 0
push 0xc
push esi
call fcn.0054bc10
add esp, 8
push 0
push dword [ebp - 0x5d8]
push dword [ebp - 0x5f4]
call fcn.00417029
mov byte [ebp - 4], 0x13
mov eax, ebx
mov edx, dword [ebp - 0x5d8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40367b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0x104
lea eax, [ebp - 0x4b4]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x4b4]
push eax
lea ecx, [ebp - 0x5ec]
call fcn.00404c90
mov byte [ebp - 4], 0x3b
push 0x5c
push dword [ebp - 0x5ec]
call fcn.0054e897
add esp, 8
test eax, eax
je 0x40370b
sub eax, dword [ebp - 0x5ec]
sar eax, 1
cmp eax, 0xffffffff
je 0x40370b
inc eax
lea ecx, [ebp - 0x5ec]
push eax
lea eax, [ebp - 0x5cc]
push eax
call fcn.00403fa0
push eax
lea ecx, [ebp - 0x5ec]
mov byte [ebp - 4], 0x3c
call fcn.004041a0
mov byte [ebp - 4], 0x3b
mov eax, ebx
mov edx, dword [ebp - 0x5cc]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40370b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x5ec]
cmp dword [eax - 0xc], 0
jne 0x40375d
lea eax, [ebp - 0xa0]
push eax
push 0x90
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea ecx, [ebp - 0xa0]
dec ecx
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403730
mov ax, word [0x5b0314]
mov word [ecx], ax
mov al, byte [0x5b0316]
mov byte [ecx + 2], al
lea eax, [ebp - 0xa0]
push eax
lea ecx, [ebp - 0x5ec]
call fcn.00404710
call fcn.00409949
mov ecx, eax
test ecx, ecx
jne 0x403772
push 0x80004005
call fcn.00401ee0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [ebp - 0x5dc], ebx
mov eax, str.ipsec32.sys
mov byte [ebp - 4], 0x3d
test eax, 0xffff0000
jne 0x4037ac
movzx esi, ax
push esi
call fcn.00414959
test eax, eax
je 0x4037c2
push esi
push eax
lea ecx, [ebp - 0x5dc]
call fcn.00404970
jmp 0x4037bc
push str.ipsec32.sys
lea ecx, [ebp - 0x5dc]
call fcn.00404710
mov ebx, dword [ebp - 0x5dc]
mov byte [ebp - 4], 0x3e
call fcn.00409949
mov ecx, eax
test ecx, ecx
jne 0x4037db
push 0x80004005
call fcn.00401ee0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x5e0], edi
mov eax, str.ipsec64.sys
mov byte [ebp - 4], 0x3f
test eax, 0xffff0000
jne 0x403815
movzx esi, ax
push esi
call fcn.00414959
test eax, eax
je 0x40382b
push esi
push eax
lea ecx, [ebp - 0x5e0]
call fcn.00404970
jmp 0x403825
push str.ipsec64.sys
lea ecx, [ebp - 0x5e0]
call fcn.00404710
mov edi, dword [ebp - 0x5e0]
mov byte [ebp - 4], 0x40
call fcn.00409949
mov ecx, eax
test ecx, ecx
jne 0x403844
push 0x80004005
call fcn.00401ee0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x5d8], eax
mov eax, str.C:Windowsipsec32.sys
mov byte [ebp - 4], 0x41
test eax, 0xffff0000
jne 0x40387e
movzx esi, ax
push esi
call fcn.00414959
test eax, eax
je 0x40388e
push esi
push eax
lea ecx, [ebp - 0x5d8]
call fcn.00404970
jmp 0x40388e
push str.C:Windowsipsec32.sys
lea ecx, [ebp - 0x5d8]
call fcn.00404710
mov byte [ebp - 4], 0x42
call fcn.00409949
mov ecx, eax
test ecx, ecx
jne 0x4038a7
push 0x80004005
call fcn.00401ee0
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x5e4], esi
mov eax, str.C:Windowsipsec64.sys
mov byte [ebp - 4], 0x43
test eax, 0xffff0000
jne 0x4038e9
movzx eax, ax
push eax
call fcn.00414959
test eax, eax
je 0x4038ff
mov edx, str.C:Windowsipsec64.sys
movzx ecx, dx
push ecx
push eax
lea ecx, [ebp - 0x5e4]
call fcn.00404970
jmp 0x4038f9
push str.C:Windowsipsec64.sys
lea ecx, [ebp - 0x5e4]
call fcn.00404710
mov esi, dword [ebp - 0x5e4]
push 0x114
lea eax, [ebp - 0x5c8]
mov byte [ebp - 4], 0x44
push 0
push eax
call fcn.0054ef40
add esp, 0xc
mov dword [ebp - 0x5c8], 0x114
lea eax, [ebp - 0x5c8]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [ebp - 0x5c4], 0xa
je 0x403af4
cmp dword [0x5db0d0], 0
mov dword [ebp - 0x5cc], 0
je 0x403a31
lea eax, [ebp - 0x5cc]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [0x5db0d0]
cmp dword [ebp - 0x5cc], 0
je 0x403a31
call fcn.00402970
test edi, edi
jne 0x403986
mov dword [ebp - 0x5d0], edi
jmp 0x4039dd
mov ecx, edi
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x403990
sub ecx, edx
sar ecx, 1
lea eax, [ecx + 1]
mov dword [ebp - 0x5cc], eax
cmp eax, 0x3fffffff
jle 0x4039bb
mov dword [ebp - 0x5d0], 0
jmp 0x4039dd
add eax, eax
call fcn.0054c7e0
mov edx, dword [ebp - 0x5cc]
mov eax, esp
push 3
lea ecx, [edx + edx]
push ecx
push edi
push eax
call fcn.004046d0
mov dword [ebp - 0x5d0], eax
test esi, esi
jne 0x4039e8
xor eax, eax
jmp 0x403ae7
mov ecx, esi
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4039f0
sub ecx, edx
sar ecx, 1
lea eax, [ecx + 1]
mov dword [ebp - 0x5cc], eax
cmp eax, 0x3fffffff
jle 0x403a16
xor eax, eax
jmp 0x403ae7
add eax, eax
call fcn.0054c7e0
mov edx, dword [ebp - 0x5cc]
mov eax, esp
push 3
lea ecx, [edx + edx]
push ecx
push esi
jmp 0x403ae1
call fcn.004028b0
test ebx, ebx
jne 0x403a42
mov dword [ebp - 0x5d0], ebx
jmp 0x403a94
mov ecx, ebx
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x403a47
sub ecx, edx
sar ecx, 1
lea eax, [ecx + 1]
mov dword [ebp - 0x5cc], eax
cmp eax, 0x3fffffff
jle 0x403a72
mov dword [ebp - 0x5d0], 0
jmp 0x403a94
add eax, eax
call fcn.0054c7e0
mov edx, dword [ebp - 0x5cc]
mov eax, esp
push 3
lea ecx, [edx + edx]
push ecx
push ebx
push eax
call fcn.004046d0
mov dword [ebp - 0x5d0], eax
mov eax, dword [ebp - 0x5d8]
test eax, eax
je 0x403ae7
mov ecx, eax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x403aa3
sub ecx, edx
sar ecx, 1
lea eax, [ecx + 1]
mov dword [ebp - 0x5cc], eax
cmp eax, 0x3fffffff
jle 0x403ac6
xor eax, eax
jmp 0x403ae7
add eax, eax
call fcn.0054c7e0
mov edx, dword [ebp - 0x5cc]
mov eax, esp
push 3
lea ecx, [edx + edx]
push ecx
push dword [ebp - 0x5d8]
push eax
call fcn.004046d0
mov ecx, dword [ebp - 0x5d0]
mov edx, eax
call fcn.00402590
lea edx, [esi - 0x10]
mov byte [ebp - 4], 0x42
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403b12
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x40
mov eax, esi
mov edx, dword [ebp - 0x5d8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403b33
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x3e
add edi, 0xfffffff0
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x403b4e
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x3b
add ebx, 0xfffffff0
mov eax, esi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x403b69
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x13
mov eax, esi
mov edx, dword [ebp - 0x5ec]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403b8a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xd
mov eax, esi
mov edx, dword [ebp - 0x5f4]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403bab
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 7
mov eax, esi
mov edx, dword [ebp - 0x5f8]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403bcc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov eax, esi
mov edx, dword [ebp - 0x5fc]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x403bed
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x5f0]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x403c0c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x624]
call fcn.004160af
lea esp, [ebp - 0x634]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0054bbdc
mov esp, ebp
pop ebp
ret