Function at 0x412280
Capabilities:
Contain obfuscated stackstrings
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x463ea0
mov eax, dword fs:[0]
push eax
sub esp, 0x58
push ebx
push ebp
push esi
push edi
mov eax, dword [0x47dac0]
xor eax, esp
push eax
lea eax, [esp + 0x6c]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x7c]
lea eax, [esp + 0x14]
push eax
push ebp
call fcn.00412050
mov dword [esp + 0x74], 0
cmp byte [ebp + 0x15c], 0
je 0x412678
push ecx
mov ecx, esp
mov dword [esp + 0x80], esp
push 0x46cca4
call fcn.00401af0
push ecx
mov byte [esp + 0x7c], 1
mov ecx, esp
mov dword [esp + 0x34], esp
push 0x46ccb0
call fcn.00401af0
push 0x481cf4
mov byte [esp + 0x80], 0
call fcn.00417820
push 0x46ccbc
call fcn.00449ab4
add esp, 4
call fcn.004268df
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x41232e
push 0x80004005
call fcn.00401820
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x60], eax
call fcn.004268df
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x412358
push 0x80004005
call fcn.00401820
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x64], eax
push 0x20
push 0
push ecx
mov byte [esp + 0x80], 2
mov ecx, esp
mov dword [esp + 0x88], esp
push 0x46ccc8
call fcn.00401af0
lea ecx, [esp + 0x64]
call fcn.00409840
test eax, eax
jne 0x412633
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x4c]
call fcn.0040a5c0
mov byte [esp + 0x74], 3
mov eax, dword [esp + 0x4c]
xor ebx, ebx
test eax, eax
jne 0x4123ba
xor ecx, ecx
jmp 0x4123c3
mov ecx, dword [esp + 0x50]
sub ecx, eax
sar ecx, 2
cmp ebx, ecx
je 0x4124ef
test eax, eax
mov edi, dword [0x481ce0]
je 0x4123e2
mov ecx, dword [esp + 0x50]
sub ecx, eax
sar ecx, 2
cmp ebx, ecx
jb 0x4123eb
call fcn.00448cb3
mov eax, dword [esp + 0x4c]
test edi, edi
lea esi, [eax + ebx*4]
je 0x412459
mov ecx, dword [esi]
cmp dword [ecx - 0xc], 0
jl 0x412459
push edi
push ecx
call fcn.00448cc3
add esp, 8
test eax, eax
je 0x412455
sub eax, dword [esi]
sar eax, 1
cmp eax, 0xffffffff
je 0x412455
mov eax, dword [esp + 0x4c]
test eax, eax
push 0x20
je 0x412428
mov ecx, dword [esp + 0x54]
sub ecx, eax
sar ecx, 2
cmp ebx, ecx
jb 0x412431
call fcn.00448cb3
mov eax, dword [esp + 0x50]
mov eax, dword [eax + ebx*4]
push ecx
sub eax, 0x10
mov dword [esp + 0x34], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
mov dword [esi], eax
add esp, 4
lea eax, [esp + 0x60]
call fcn.0040a530
mov eax, dword [esp + 0x4c]
test eax, eax
mov edi, dword [0x481cf0]
je 0x412470
mov ecx, dword [esp + 0x50]
sub ecx, eax
sar ecx, 2
cmp ebx, ecx
jb 0x412479
call fcn.00448cb3
mov eax, dword [esp + 0x4c]
test edi, edi
lea esi, [eax + ebx*4]
je 0x4124e7
mov ecx, dword [esi]
cmp dword [ecx - 0xc], 0
jl 0x4124e7
push edi
push ecx
call fcn.00448cc3
add esp, 8
test eax, eax
je 0x4124e3
sub eax, dword [esi]
sar eax, 1
cmp eax, 0xffffffff
je 0x4124e3
mov eax, dword [esp + 0x4c]
test eax, eax
push 0x20
je 0x4124b6
mov ecx, dword [esp + 0x54]
sub ecx, eax
sar ecx, 2
cmp ebx, ecx
jb 0x4124bf
call fcn.00448cb3
mov eax, dword [esp + 0x50]
mov eax, dword [eax + ebx*4]
push ecx
sub eax, 0x10
mov dword [esp + 0x34], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
mov dword [esi], eax
add esp, 4
lea eax, [esp + 0x60]
call fcn.0040a530
mov eax, dword [esp + 0x4c]
add ebx, 1
jmp 0x4123b2
lea edx, [ebp + 0x190]
push edx
lea eax, [esp + 0x80]
push 0x481cf0
push eax
call fcn.004034d0
add esp, 0xc
push 1
lea ecx, [esp + 0x1c]
push 0x46c548
push ecx
lea ecx, [esp + 0x20]
mov byte [esp + 0x80], 4
mov esi, 0x20
call fcn.00402120
push 0x46c548
push eax
lea edx, [esp + 0x34]
push edx
mov byte [esp + 0x8c], 5
call fcn.00403590
add esp, 0x10
mov bl, 6
mov ecx, esp
mov byte [esp + 0x7c], bl
mov dword [esp + 0x34], esp
push str._tray
push eax
push ecx
call fcn.00403590
mov byte [esp + 0x88], 7
mov eax, dword [esp + 0x90]
add esp, 8
add eax, 0xfffffff0
mov dword [esp + 0x34], esp
mov edi, esp
push eax
call fcn.00401a80
add eax, 0x10
mov dword [edi], eax
add esp, 4
mov ecx, esi
lea edx, [esp + 0x64]
mov byte [esp + 0x80], bl
call fcn.00409f60
mov byte [esp + 0x74], 5
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4125c0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x74], 4
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4125e5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x58]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov byte [esp + 0x74], 3
mov eax, dword [esp + 0x7c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x412615
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x412633
mov edi, dword [esp + 0x50]
call fcn.004024d0
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.00426848
add esp, 4
mov byte [esp + 0x74], 0
mov eax, dword [esp + 0x64]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x412658
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412678
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str._tgy
lea ecx, [esp + 0x20]
call fcn.00401af0
push 0x46cd68
lea ecx, [esp + 0x28]
mov byte [esp + 0x78], 8
call fcn.00401af0
mov byte [esp + 0x74], 9
cmp byte [ebp + 0x15d], 0
je 0x412a25
push ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x46cd74
call fcn.00401af0
push ecx
mov byte [esp + 0x7c], 0xa
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x46ccb0
call fcn.00401af0
push 0x481cf4
mov byte [esp + 0x80], 9
call fcn.00417820
lea esi, [esp + 0x18]
call fcn.004079f0
push 0x46babc
push eax
lea ecx, [esp + 0x28]
push ecx
mov byte [esp + 0x80], 0xb
call fcn.00403590
add esp, 0xc
push 0x481ce4
push eax
lea edx, [esp + 0x84]
push edx
mov byte [esp + 0x80], 0xc
call fcn.004034d0
add esp, 0xc
mov byte [esp + 0x74], 0xe
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41274b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov bl, 0xf
mov byte [esp + 0x74], bl
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412771
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x7c]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x30], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.00403d30
mov ecx, esp
mov dword [esp + 0x34], esp
push 0x46baac
call fcn.00401af0
mov byte [esp + 0x78], 0x10
mov eax, dword [esp + 0x20]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x3c], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
mov dword [esi], eax
mov byte [esp + 0x80], 0x11
mov ecx, esp
mov dword [esp + 0x44], esp
push 0x46baac
call fcn.00401af0
push ecx
mov byte [esp + 0x84], 0x12
mov ecx, esp
mov dword [esp + 0x4c], esp
push 0x46baac
call fcn.00401af0
push 0x46babc
lea ecx, [esp + 0x90]
push ecx
lea edx, [esp + 0x44]
push edx
mov byte [esp + 0x90], 0x13
call fcn.00403590
add esp, 0xc
push 0x481ce4
push eax
lea eax, [esp + 0x40]
push eax
mov byte [esp + 0x90], 0x14
call fcn.004034d0
add esp, 8
mov ecx, esp
mov byte [esp + 0x88], 0x15
mov dword [esp + 0x54], esp
push str..lnk
push eax
push ecx
call fcn.00403590
mov byte [esp + 0x94], 0x16
mov eax, dword [esp + 0x34]
add esp, 8
add eax, 0xfffffff0
mov dword [esp + 0x5c], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov byte [esp + 0x8c], 0x18
call fcn.00407000
add esp, 0x18
mov byte [esp + 0x74], 0x17
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4128a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x74], bl
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4128c7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push 0x46baac
call fcn.00401af0
mov byte [esp + 0x78], 0x19
mov eax, dword [esp + 0x28]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x48], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
mov dword [esi], eax
mov byte [esp + 0x80], 0x1a
mov ecx, esp
mov dword [esp + 0x48], esp
push 0x46baac
call fcn.00401af0
push ecx
mov byte [esp + 0x84], 0x1b
mov ecx, esp
mov dword [esp + 0x48], esp
push 0x46baac
call fcn.00401af0
push 0x46cd90
lea ecx, [esp + 0x90]
push ecx
lea edx, [esp + 0x40]
push edx
mov byte [esp + 0x90], 0x1c
call fcn.00403590
add esp, 0xc
push 0x481ce4
push eax
lea eax, [esp + 0x44]
push eax
mov byte [esp + 0x90], 0x1d
call fcn.004034d0
add esp, 8
mov ecx, esp
mov byte [esp + 0x88], 0x1e
mov dword [esp + 0x48], esp
push str..lnk
push eax
push ecx
call fcn.00403590
add esp, 8
mov edx, esp
mov byte [esp + 0x8c], 0x1f
mov dword [esp + 0x48], esp
push str.uninstall.exe
lea eax, [ebp + 0x194]
push eax
push edx
call fcn.00403590
add esp, 0xc
mov byte [esp + 0x8c], 0x21
call fcn.00407000
mov byte [esp + 0x8c], 0x20
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
add esp, 0x18
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4129dc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x74], bl
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412a00
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x74], 9
mov eax, dword [esp + 0x7c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412a25
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebp + 0x15e], 0
je 0x412bdd
push ecx
mov ecx, esp
mov dword [esp + 0x80], esp
push 0x46cdb8
call fcn.00401af0
push ecx
mov byte [esp + 0x7c], 0x22
mov ecx, esp
mov dword [esp + 0x4c], esp
push 0x46ccb0
call fcn.00401af0
push 0x481cf4
mov byte [esp + 0x80], 9
call fcn.00417820
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push 0x46baac
call fcn.00401af0
mov byte [esp + 0x78], 0x23
mov eax, dword [esp + 0x20]
push ecx
add eax, 0xfffffff0
mov dword [esp + 0x48], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
mov dword [esi], eax
mov byte [esp + 0x80], 0x24
mov ecx, esp
mov dword [esp + 0x48], esp
push 0x46baac
call fcn.00401af0
push ecx
mov byte [esp + 0x84], 0x25
mov ecx, esp
mov dword [esp + 0x48], esp
push 0x46baac
call fcn.00401af0
lea esi, [esp + 0x38]
mov byte [esp + 0x84], 0x26
call fcn.004079a0
push 0x46babc
push eax
lea ecx, [esp + 0x44]
push ecx
mov byte [esp + 0x90], 0x27
call fcn.00403590
add esp, 0xc
push 0x481ce4
push eax
lea edx, [esp + 0x94]
push edx
mov byte [esp + 0x90], 0x28
call fcn.004034d0
add esp, 8
mov ecx, esp
mov byte [esp + 0x88], 0x29
mov dword [esp + 0x48], esp
push str..lnk
push eax
push ecx
call fcn.00403590
mov byte [esp + 0x94], 0x2a
mov eax, dword [esp + 0x34]
add esp, 8
add eax, 0xfffffff0
mov dword [esp + 0x48], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov byte [esp + 0x8c], 0x2d
call fcn.00407000
mov byte [esp + 0x8c], 0x2c
mov eax, dword [esp + 0x94]
add eax, 0xfffffff0
add esp, 0x18
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x412b93
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x74], 0x2b
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412bb8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x74], 9
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412bdd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebp + 0x158], 0
je 0x412d0a
mov ecx, dword [ebp + 0x148]
cmp dword [ecx - 0xc], 0
je 0x412d0a
push ecx
mov ecx, esp
mov dword [esp + 0x80], esp
push 0x46cdc8
call fcn.00401af0
push ecx
mov byte [esp + 0x7c], 0x2e
mov ecx, esp
mov dword [esp + 0x4c], esp
push 0x46ccb0
call fcn.00401af0
push 0x481cf4
mov byte [esp + 0x80], 9
call fcn.00417820
push 0x46cdd4
call fcn.00449ab4
add esp, 4
lea edx, [esp + 0x48]
push edx
call fcn.00418130
mov byte [esp + 0x74], 0x2f
mov eax, dword [ebp + 0x154]
push ecx
sub eax, 0x10
mov dword [esp + 0x80], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
add esp, 4
lea ecx, [esp + 0x4c]
mov dword [esi], eax
call fcn.0040d720
mov eax, dword [ebp + 0x150]
push ecx
sub eax, 0x10
mov dword [esp + 0x80], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
add esp, 4
lea ecx, [esp + 0x4c]
mov dword [esi], eax
call fcn.0040d6b0
mov eax, dword [ebp + 0x148]
push ecx
sub eax, 0x10
mov dword [esp + 0x80], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
add esp, 4
lea ecx, [esp + 0x4c]
mov dword [esi], eax
call fcn.00417660
lea esi, [esp + 0x48]
call fcn.00418290
mov eax, esi
push eax
call fcn.00418720
mov edi, esi
call fcn.00419700
mov ecx, esi
push ecx
call fcn.00419b80
mov edx, esi
push edx
call fcn.00419e00
mov eax, esi
push eax
call fcn.00418d80
mov byte [esp + 0x74], 9
call fcn.00418230
call fcn.004268df
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x412d24
push 0x80004005
call fcn.00401820
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x7c], eax
mov byte [esp + 0x74], 0x30
call fcn.004268df
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x412d53
push 0x80004005
call fcn.00401820
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
push 0x46c54c
lea esi, [ebp + 0x194]
lea ecx, [esp + 0x30]
push esi
mov bl, 0x31
push ecx
mov byte [esp + 0x80], bl
call fcn.00403590
add esp, 0xc
push eax
lea ecx, [esp + 0x80]
mov byte [esp + 0x78], 0x32
call fcn.00402c00
mov byte [esp + 0x74], bl
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x412dbb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.ieplugin64.dll
lea ecx, [esp + 0x30]
push esi
push ecx
call fcn.00403590
add esp, 0xc
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x78], 0x33
call fcn.00402c00
mov byte [esp + 0x74], bl
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x412e01
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp + 0x18c], 0
mov ebp, dword [esp + 0x18]
mov edi, dword [esp + 0x7c]
je 0x412f8f
push ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push 0x46cde0
call fcn.00401af0
push ecx
mov byte [esp + 0x7c], 0x34
mov ecx, esp
mov dword [esp + 0x48], esp
push 0x46ccb0
call fcn.00401af0
push 0x481cf4
mov byte [esp + 0x80], bl
call fcn.00417820
push ecx
lea eax, [edi - 0x10]
mov dword [esp + 0x48], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.004041a0
add esp, 4
test eax, eax
je 0x412ed1
lea ecx, [esp + 0x2c]
push 0x46c548
push ecx
lea ecx, [esp + 0x84]
call fcn.00402120
add esp, 4
mov edx, esp
mov byte [esp + 0x78], 0x35
mov dword [esp + 0x48], esp
push 0x46c548
push eax
push edx
call fcn.00403590
add esp, 0xc
call fcn.00401fc0
mov byte [esp + 0x78], bl
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412ed1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push str.IsWow64Process
push str.kernel32
mov dword [esp + 0x28], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
test esi, esi
je 0x412f04
lea ecx, [esp + 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
cmp dword [esp + 0x20], 0
je 0x412f8f
push ecx
lea eax, [ebp - 0x10]
mov dword [esp + 0x48], esp
mov esi, esp
push eax
call fcn.00401a80
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.004041a0
add esp, 4
test eax, eax
je 0x412f8f
lea edx, [esp + 0x2c]
push 0x46c548
push edx
lea ecx, [esp + 0x20]
call fcn.00402120
add esp, 4
mov ecx, esp
mov byte [esp + 0x78], 0x36
mov dword [esp + 0x48], esp
push 0x46c548
push eax
push ecx
call fcn.00403590
add esp, 0xc
call fcn.00401fc0
mov byte [esp + 0x78], bl
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x412f8f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebp - 0x10]
mov byte [esp + 0x74], 0x30
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412fb0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [edi - 0x10]
mov byte [esp + 0x74], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412fd1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x74], 8
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412ff6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x74], 0
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41301b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x74], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413043
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x6c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret 4