Function at 0x41d9ac
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x23
push 0
push 0
dec ecx
jne 0x41d9b5
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
test dl, dl
je 0x41d9ce
add esp, 0xfffffff0
call fcn.00403174
mov ebx, ecx
mov byte [ebp - 5], dl
mov dword [ebp - 4], eax
mov edi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x18]
call fcn.004041d8
lea eax, [ebp - 0xa0]
mov edx, dword [0x4158a8]
call fcn.0040472c
xor eax, eax
push ebp
push 0x41e8e5
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x20], edx
call fcn.0041b930
push ebp
push 0x41e895
push dword fs:[0]
mov dword fs:[0], esp
call fcn.00418f68
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
je 0x41da46
mov edx, 0x42fe78
mov eax, 0x42fe74
call fcn.00418cfc
mov eax, dword [ebp + 0xc]
mov dword [eax], edi
mov eax, dword [ebp - 4]
mov dword [eax + 0x30], ebx
test byte [ebp + 8], 0x20
setne al
mov edx, dword [ebp - 4]
mov byte [edx + 0x34], al
test byte [ebp + 8], 0x40
setne al
mov edx, dword [ebp - 4]
mov byte [edx + 0x35], al
mov eax, dword [ebp - 4]
xor edx, edx
mov dword [eax + 0x28], edx
lea edx, [ebp - 0xe0]
mov eax, 0x41d0d8
call fcn.00417f3c
mov eax, dword [ebp - 0xd4]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
add eax, 0xf5a
call fcn.0041b258
mov esi, eax
mov eax, dword [ebp - 4]
mov dword [eax + 0x20], esi
mov byte [esi], 0xff
mov byte [esi + 1], 0x25
lea eax, [esi + 6]
mov dword [esi + 2], eax
mov edx, dword [ebp - 4]
mov eax, edi
mov dword [edx + 8], eax
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 4]
mov edx, dword [ebp + 0x10]
mov dword [eax + 0x10], edx
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 4]
mov dword [edx + 0x14], eax
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
xor ecx, ecx
mov eax, 0x41e918
call fcn.0041add4
lea eax, [ebp - 0x20]
push eax
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
mov eax, 0x41e918
mov cl, 1
call fcn.0041add4
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
je 0x41db24
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0x80000000
jb 0x41db2c
lea eax, [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
call fcn.00403de4
lea eax, [ebp - 0x20]
call fcn.00403d4c
jmp 0x41db2c
lea eax, [ebp - 0x20]
call fcn.00403d4c
lea edx, [ebp - 0xe8]
mov eax, 0x41e924
call fcn.00414818
push dword [ebp - 0xe8]
push 0x41e934
push dword [ebp - 0x1c]
lea eax, [ebp - 0xe4]
mov edx, 3
call fcn.004040a8
mov eax, dword [ebp - 0xe4]
call fcn.004041e8
push eax
call fcn.0041a9ec
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0x20], 0
je 0x41dbb8
lea edx, [ebp - 0xf0]
mov eax, 0x41e924
call fcn.00414818
push dword [ebp - 0xf0]
push 0x41e934
push dword [ebp - 0x20]
lea eax, [ebp - 0xec]
mov edx, 3
call fcn.004040a8
mov eax, dword [ebp - 0xec]
call fcn.004041e8
push eax
call fcn.0041a9ec
mov dword [ebp - 0x10], eax
jmp 0x41dbbd
xor eax, eax
mov dword [ebp - 0x10], eax
push ebp
push 0x41e872
push dword fs:[0]
mov dword fs:[0], esp
cmp dword [ebp - 0xc], 0
je 0x41dbe2
push 0xffffffffffffffff
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_WaitForSingleObject
cmp dword [ebp - 0x10], 0
je 0x41dbf3
push 0xffffffffffffffff
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_WaitForSingleObject
push ebp
push 0x41e83f
push dword fs:[0]
mov dword fs:[0], esp
push 0xffffffffffffffff
lea edx, [ebp - 0xf8]
mov eax, 0x41e940
call fcn.00414818
push dword [ebp - 0xf8]
push 0x41e934
push dword [ebp - 0x1c]
lea eax, [ebp - 0xf4]
mov edx, 3
call fcn.004040a8
mov eax, dword [ebp - 0xf4]
call fcn.004041e8
push eax
call fcn.0041ace4
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x14]
call fcn.0041d83c
xor al, 1
mov edx, dword [ebp - 4]
mov byte [edx + 5], al
mov eax, dword [ebp - 4]
cmp byte [eax + 5], 0
je 0x41dcd2
cmp dword [ebp - 0x20], 0
je 0x41dcd2
push 0xffffffffffffffff
lea edx, [ebp - 0x100]
mov eax, 0x41e940
call fcn.00414818
push dword [ebp - 0x100]
push 0x41e934
push dword [ebp - 0x20]
lea eax, [ebp - 0xfc]
mov edx, 3
call fcn.004040a8
mov eax, dword [ebp - 0xfc]
call fcn.004041e8
push eax
call fcn.0041ace4
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x14]
call fcn.0041d83c
xor al, 1
mov edx, dword [ebp - 4]
mov byte [edx + 5], al
mov eax, dword [ebp - 4]
cmp byte [eax + 5], 0
jne 0x41dcd2
lea eax, [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
call fcn.00403de4
push ebp
push 0x41e80c
push dword fs:[0]
mov dword fs:[0], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 5], 0
je 0x41e0c5
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 8]
mov edx, dword [ebp + 0x18]
mov eax, ebx
call fcn.0041d614
test al, al
je 0x41dd27
mov dword [ebp - 0x38], 0x770001
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
jmp 0x41e89c
test byte [ebp + 8], 2
jne 0x41dd7f
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
mov eax, ebx
call fcn.0041d518
test al, al
je 0x41dd44
or dword [ebp + 8], 2
jmp 0x41dd7f
lea edx, [ebp - 0xa0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
call fcn.00417f3c
cmp byte [ebp - 0xa0], 0
je 0x41dd64
cmp byte [ebp - 0x78], 0
jne 0x41dd6a
or dword [ebp + 8], 2
jmp 0x41dd7f
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
mov eax, ebx
call fcn.0041d88c
test al, al
je 0x41dd7f
or dword [ebp + 8], 2
test byte [ebp + 8], 2
jne 0x41ddbf
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
mov eax, ebx
call fcn.0041d7c0
mov edx, dword [ebp - 4]
mov byte [edx + 0xc], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41e0d5
cmp dword [ebp - 0x20], 0
je 0x41e0d5
lea eax, [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
call fcn.00403de4
jmp 0x41e0d5
test byte [ebp + 8], 0x10
jne 0x41e0a5
test ebx, ebx
je 0x41de2c
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
jne 0x41de0c
lea edx, [ebp - 0x108]
mov eax, 0x41e954
call fcn.00414818
mov eax, dword [ebp - 0x108]
lea ecx, [ebp - 0x104]
mov dl, 1
call fcn.00414888
mov eax, dword [ebp - 0x104]
push eax
call sub.kernel32.dll_GetModuleHandleW
mov edi, eax
jmp 0x41de2e
mov eax, 0x41e954
lea edx, [ebp - 0x10c]
call fcn.00414818
mov eax, dword [ebp - 0x10c]
push eax
call sub.kernel32.dll_GetModuleHandleA_1
mov edi, eax
jmp 0x41de2e
xor edi, edi
cmp ebx, edi
je 0x41e085
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
je 0x41de66
mov eax, dword [ebp - 4]
cmp dword [eax + 8], 0x80000000
jae 0x41de6a
test ebx, ebx
je 0x41de66
mov eax, ebx
call fcn.00414f44
mov edx, eax
mov eax, ebx
call fcn.0041d7c0
test al, al
jne 0x41de6a
xor eax, eax
jmp 0x41de6c
mov al, 1
mov edx, dword [ebp - 4]
mov byte [edx + 0xc], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41de9a
cmp dword [ebp - 0x20], 0
je 0x41de8c
lea eax, [ebp - 0x1c]
mov edx, dword [ebp - 0x20]
call fcn.00403de4
push 0
push 0xa
call fcn.00418dbc
mov dword [ebp - 0x2c], eax
jmp 0x41dea7
mov eax, 0xa
call fcn.0041b258
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
mov byte [eax], 0xff
mov eax, dword [ebp - 0x2c]
mov byte [eax + 1], 0x25
mov eax, dword [ebp - 0x2c]
add eax, 6
mov edx, dword [ebp - 0x2c]
mov dword [edx + 2], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x2c]
mov dword [edx + 6], eax
mov eax, dword [0x430820]
mov dword [eax], fcn.0041b004
lea eax, [ebp - 0x24]
push eax
mov eax, dword [ebp - 4]
mov cl, byte [eax + 0xc]
mov edx, dword [ebp - 0x2c]
mov eax, 0x41e968
call fcn.0041add4
push 4
lea edx, [ebp - 0x114]
mov eax, 0x41e940
call fcn.00414818
push dword [ebp - 0x114]
push 0x41e934
push dword [ebp - 0x24]
lea eax, [ebp - 0x110]
mov edx, 3
call fcn.004040a8
mov eax, dword [ebp - 0x110]
call fcn.004041e8
push eax
call fcn.0041abd0
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x41df79
push 0
push 0
push 0
push 0xf001f
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_MapViewOfFile
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x41df6b
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x18]
mov dword [edx], eax
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UnmapViewOfFile
jmp 0x41df79
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_CloseHandle
xor eax, eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x41e030
mov eax, dword [ebp - 4]
mov edx, dword [eax + 8]
mov ecx, dword [ebp - 0x2c]
mov eax, ebx
call fcn.0041b2e4
test al, al
jne 0x41dfb4
call fcn.0041b4e0
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 8]
jne 0x41e030
mov eax, dword [ebp - 0x2c]
call fcn.0041b504
test al, al
je 0x41e030
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41dff5
mov eax, dword [ebp - 0x14]
call fcn.00418cac
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_CloseHandle
call fcn.0041b4e0
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 8]
je 0x41dff5
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x2c]
call fcn.0041b55c
test byte [ebp + 8], 4
setne al
call fcn.0041b97c
xor eax, eax
push ebp
push 0x41e01b
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
mov eax, dword [eax + 8]
mov edx, dword [ebp - 0x2c]
call fcn.0041b4b8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x41e025
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x30], eax
jmp 0x41e0d5
cmp dword [ebp - 0x14], 0
je 0x41e03f
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_CloseHandle
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41e055
push 0
mov eax, dword [ebp - 0x2c]
push eax
call fcn.00418ed4
jmp 0x41e065
push 0x8000
push 0
mov eax, dword [ebp - 0x2c]
push eax
call sub.kernel32.dll_VirtualFree_1
mov dword [ebp - 0x38], 0x770002
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
jmp 0x41e89c
mov dword [ebp - 0x38], 0x770002
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
jmp 0x41e89c
mov dword [ebp - 0x38], 0x770002
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
jmp 0x41e89c
mov eax, dword [ebp - 0x1c]
cmp byte [eax + 5], 0x53
sete al
mov edx, dword [ebp - 4]
mov byte [edx + 0xc], al
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41e0e4
test byte [ebp + 8], 4
jne 0x41e0e8
xor eax, eax
jmp 0x41e0ea
mov al, 1
mov edx, dword [ebp - 4]
mov byte [edx + 0x24], al
test al, al
je 0x41e2b6
mov eax, dword [ebp - 4]
cmp dword [eax + 0x10], 0x80000000
jae 0x41e20f
mov eax, dword [ebp - 4]
add eax, 0x18
push eax
lea eax, [ebp - 0xa0]
push eax
test byte [ebp + 8], 8
setne cl
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
xor edx, edx
call fcn.00419190
mov edx, dword [ebp - 4]
mov dword [edx + 0x10], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0x10], 0
jne 0x41e159
mov dword [ebp - 0x38], 0x770003
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
jmp 0x41e89c
mov eax, dword [ebp - 0x80]
call fcn.00404c88
mov esi, eax
test esi, esi
jl 0x41e1f5
inc esi
xor ebx, ebx
mov eax, ebx
shl eax, 3
sub eax, ebx
mov edx, dword [ebp - 0x80]
lea ecx, [edx + eax*4]
cmp byte [ecx + 0x10], 0
jne 0x41e1ed
cmp dword [ecx + 0x18], 0
je 0x41e1ed
mov eax, dword [ecx + 0x18]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x14]
jne 0x41e1ed
mov eax, dword [ecx + 0x18]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 0x98]
xor edx, edx
push edx
push eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
xor edx, edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
sub dword [esp], eax
sbb dword [esp + 4], edx
pop eax
pop edx
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 4]
cmp byte [eax + 0x24], 0
jne 0x41e1dc
mov edx, 4
mov eax, dword [ebp - 0x34]
call fcn.004190f8
test al, al
je 0x41e1ed
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
add eax, dword [ebp - 0x94]
mov edx, dword [ebp - 0x34]
mov dword [edx], eax
inc ebx
dec esi
jne 0x41e16e
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
add eax, dword [ebp - 0x94]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x20]
mov dword [edx + 2], eax
jmp 0x41e2b6
lea edx, [ebp - 0xa0]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
call fcn.00417f3c
cmp byte [ebp - 0xa0], 0
jne 0x41e249
mov dword [ebp - 0x38], 0x770003
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
call fcn.0040374c
jmp 0x41e89c
mov eax, dword [ebp - 0x80]
call fcn.00404c88
mov esi, eax
test esi, esi
jl 0x41e2b6
inc esi
xor ebx, ebx
mov eax, ebx
shl eax, 3
sub eax, ebx
mov edx, dword [ebp - 0x80]
lea edi, [edx + eax*4]
cmp byte [edi + 0x10], 0
jne 0x41e2b2
cmp dword [edi + 0x18], 0
je 0x41e2b2
mov eax, dword [edi + 0x18]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
cmp eax, dword [edx + 0x14]
jne 0x41e2b2
mov eax, dword [ebp - 4]
cmp dword [eax + 0x18], 0
jne 0x41e2a7
push 0
push 4
call fcn.00418dbc
mov edx, dword [ebp - 4]
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x20]
mov dword [edx + 2], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
mov edx, dword [edi + 0x18]
mov dword [edx], eax
inc ebx
dec esi
jne 0x41e25a
xor eax, eax
mov dword [ebp - 0x18], eax
xor ecx, ecx
push ebp
push 0x41e7d6
push dword fs:[ecx]
mov dword fs:[ecx], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 5], 0
je 0x41e503
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41e2f0
push 0
push 0x22
call fcn.00418dbc
mov edx, dword [ebp - 4]
mov dword [edx + 0x38], eax
jmp 0x41e31d
call sub.kernel32.dll_GetVersion_1
test eax, 0x80000000
je 0x41e30d
push 0x22
push 0x40
call sub.kernel32.dll_LocalAlloc_2
mov edx, dword [ebp - 4]
mov dword [edx + 0x38], eax
jmp 0x41e31d
mov eax, 0x22
call fcn.0041b258
mov edx, dword [ebp - 4]
mov dword [edx + 0x38], eax
mov ebx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
mov esi, dword [eax + 0x38]
lea edx, [ebp - 0x60]
mov eax, ebx
call fcn.00416d38
cmp byte [ebp - 0x59], 0
je 0x41e39f
cmp dword [ebp - 0x4c], 1
jne 0x41e35e
cmp word [ebp - 0x5e], 0xeb
je 0x41e356
mov byte [esi], 0xf
mov al, byte [ebp - 0x5e]
and al, 0xf
add al, 0x80
mov byte [esi + 1], al
add esi, 6
jmp 0x41e391
mov byte [esi], 0xe9
add esi, 5
jmp 0x41e391
cmp dword [ebp - 0x4c], 2
jne 0x41e37f
mov edi, dword [ebp - 0x40]
sub edi, ebx
mov ecx, edi
sub ecx, 3
mov edx, esi
mov eax, ebx
inc eax
call fcn.0040280c
add edi, esi
inc edi
mov esi, edi
jmp 0x41e391
mov edi, dword [ebp - 0x40]
sub edi, ebx
mov edx, esi
mov eax, ebx
mov ecx, edi
call fcn.0040280c
add esi, edi
mov edx, dword [ebp - 0x58]
mov eax, esi
sub edx, eax
sub eax, 4
mov dword [eax], edx
jmp 0x41e3b1
mov edi, dword [ebp - 0x40]
sub edi, ebx
mov edx, esi
mov eax, ebx
mov ecx, edi
call fcn.0040280c
add esi, edi
mov ebx, dword [ebp - 0x40]
mov eax, ebx
sub eax, dword [ebp - 0x30]
cmp eax, 6
jb 0x41e326
mov byte [esi], 0xe9
add esi, 5
sub ebx, esi
sub esi, 4
mov dword [esi], ebx
push 4
lea edx, [ebp - 0x11c]
mov eax, 0x41e940
call fcn.00414818
push dword [ebp - 0x11c]
push 0x41e934
push dword [ebp - 0x1c]
lea eax, [ebp - 0x118]
mov edx, 3
call fcn.004040a8
mov eax, dword [ebp - 0x118]
call fcn.004041e8
push eax
call fcn.0041abd0
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x41e5b8
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41e42e
mov eax, dword [ebp - 0x14]
call fcn.00418cac
push 0
push 0
push 0
push 0xf001f
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_MapViewOfFile
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
je 0x41e5b8
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41e468
push 0
push 0x5c
call fcn.00418dbc
mov edx, dword [ebp - 0x18]
mov dword [edx], eax
jmp 0x41e477
mov eax, 0x5c
call fcn.0041b258
mov edx, dword [ebp - 0x18]
mov dword [edx], eax
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
mov dword [eax], 2
mov dword [eax + 4], 8
mov edx, dword [ebp - 0x30]
mov dword [eax + 0xc], edx
mov edx, dword [eax + 0xc]
mov ecx, dword [edx]
mov dword [eax + 0x10], ecx
mov cx, word [edx + 4]
mov word [eax + 0x14], cx
mov byte [eax + 0x16], 0xff
mov byte [eax + 0x17], 0x25
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x38]
add edx, 0x1e
mov dword [eax + 0x18], edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x38]
mov ecx, dword [eax + 0x18]
mov dword [ecx], edx
mov edx, dword [ebp - 4]
cmp byte [edx + 0xc], 0
jne 0x41e4da
mov edx, dword [ebp - 4]
mov edx, dword [edx + 8]
cmp edx, dword [eax + 0xc]
jne 0x41e4da
mov edx, dword [ebp - 0x14]
mov dword [eax + 8], edx
jmp 0x41e4df
xor edx, edx
mov dword [eax + 8], edx
xor edx, edx
mov dword [eax + 0x1c], edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x38]
add edx, 0x1e
mov dword [eax + 0x20], edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x38]
mov dword [eax + 0x24], edx
xor edx, edx
mov dword [eax + 0x28], edx
jmp 0x41e5b8
push 0
push 0
push 0
push 0xf001f
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_MapViewOfFile
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
mov ebx, dword [eax]
mov eax, dword [ebx]
mov eax, dword [ebx + eax*8 + 0x14]
mov edx, dword [ebp - 4]
mov dword [edx + 0x38], eax
mov eax, dword [ebx + 4]
cmp eax, dword [ebx]
jne 0x41e5b8
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41e556
push 0
mov eax, dword [ebx + 4]
add eax, eax
shl eax, 3
add eax, 0x1c
push eax
call fcn.00418dbc
mov esi, eax
jmp 0x41e568
mov eax, dword [ebx + 4]
add eax, eax
shl eax, 3
add eax, 0x1c
call fcn.0041b258
mov esi, eax
mov ecx, dword [ebx + 4]
shl ecx, 3
add ecx, 0x1c
mov edx, esi
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
call fcn.0040280c
mov eax, dword [ebx + 4]
add eax, eax
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x18]
mov dword [eax], esi
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41e5a8
push 0
mov eax, dword [ebp - 0x28]
push eax
call fcn.00418ed4
jmp 0x41e5b8
push 0x8000
push 0
mov eax, dword [ebp - 0x28]
push eax
call sub.kernel32.dll_VirtualFree_1
mov eax, dword [ebp - 4]
cmp byte [eax + 0x24], 0
jne 0x41e730
test byte [ebp + 8], 1
jne 0x41e690
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
add eax, 0xa
mov edx, dword [ebp - 4]
mov dword [edx + 0x28], eax
xor ebx, ebx
mov eax, ebx
shl eax, 3
sub eax, ebx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x28]
lea eax, [edx + eax*2]
mov byte [eax], 0x68
xor edx, edx
mov dword [eax + 1], edx
mov byte [eax + 5], 0xf0
mov word [eax + 6], 0x2583
lea edx, [eax + 1]
mov dword [eax + 8], edx
mov byte [eax + 0xc], 0
mov byte [eax + 0xd], 0xc3
inc ebx
cmp ebx, 0x118
jne 0x41e5e0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x28]
add eax, 0xf50
mov esi, eax
mov edx, esi
mov eax, 0x41d0d8
mov ecx, dword [ebp - 0x3c]
call fcn.0040280c
mov eax, dword [ebp - 0x3c]
push eax
push 0
push 0
push 0x7fffffff
mov eax, 0x41e96c
mov ecx, 4
mov edx, esi
call fcn.00413d04
add eax, esi
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x28]
mov dword [eax], edx
mov eax, dword [ebp - 0x3c]
push eax
push 0
push 0
push 0x7fffffff
mov eax, 0x41e974
mov ecx, 4
mov edx, esi
call fcn.00413d04
add eax, esi
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x10]
sub edx, esi
sub edx, dword [ebp - 0x3c]
mov dword [eax], edx
mov eax, dword [ebp - 4]
mov dword [eax + 0x10], esi
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc], 0
je 0x41e730
push 0
push 0x22
call fcn.00418dbc
mov edx, dword [ebp - 4]
mov dword [edx + 0x1c], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
mov edi, eax
mov esi, 0x42ff08
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor edx, edx
mov eax, 0x41e984
call fcn.00418008
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x1c]
inc edx
add edx, 5
sub eax, edx
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x1c]
mov dword [edx + 2], eax
call sub.kernel32.dll_GetCurrentProcessId
mov edx, dword [ebp - 4]
mov ebx, dword [edx + 0x1c]
mov dword [ebx + 7], eax
lea eax, [ebx + 0x14]
mov dword [ebx + 0x10], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x10]
mov dword [ebx + 0x14], eax
lea eax, [ebx + 0x1e]
mov dword [ebx + 0x1a], eax
lea eax, [ebx + 0x1e]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x20]
mov dword [edx + 2], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x1c]
push eax
call sub.kernel32.dll_GetCurrentProcessId
push eax
call sub.kernel32.dll_GetCurrentProcess
mov edx, dword [ebp - 4]
mov ecx, dword [edx + 8]
pop edx
call fcn.0041cc68
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x14]
mov dword [edx], eax
mov eax, dword [ebp - 0x18]
mov eax, dword [eax]
mov edx, dword [eax]
mov ecx, dword [eax + edx*8 + 0x14]
mov dword [eax + edx*8 + 0x1c], ecx
mov ecx, dword [eax + edx*8 + 0x18]
mov dword [eax + edx*8 + 0x20], ecx
mov edx, dword [ebp - 4]
cmp byte [edx + 0xc], 0
je 0x41e775
mov edx, dword [ebp - 4]
cmp byte [edx + 0x24], 0
jne 0x41e775
mov edx, dword [eax]
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx + 0x1c]
mov dword [eax + edx*8 + 0x14], ecx
jmp 0x41e781
mov edx, dword [eax]
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx + 0x10]
mov dword [eax + edx*8 + 0x14], ecx
mov edx, dword [eax]
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx + 0x20]
mov ecx, dword [ecx + 2]
mov dword [eax + edx*8 + 0x18], ecx
mov edx, dword [eax]
mov ecx, dword [eax + edx*8 + 0x1c]
mov edx, dword [eax + edx*8 + 0x18]
mov dword [edx], ecx
mov edx, dword [eax]
mov ecx, dword [eax + edx*8 + 0x14]
mov edx, dword [eax + edx*8 + 0x10]
mov dword [edx], ecx
inc dword [eax]
mov eax, dword [ebp - 4]
mov byte [eax + 4], 1
mov eax, dword [ebp - 4]
call fcn.0041f040
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41e7dd
cmp dword [ebp - 0x18], 0
je 0x41e7d5
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UnmapViewOfFile
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x41e8ec
lea eax, [ebp - 0x11c]
mov edx, 0xf
call fcn.00403d70
lea eax, [ebp - 0xe0]
mov edx, dword [0x4158a8]
mov ecx, 2
call fcn.0040483c
lea eax, [ebp - 0x24]
mov edx, 3
call fcn.00403d70
lea eax, [ebp + 0x18]
call fcn.00403d4c
ret