Function at 0x10003ed0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x40]
add eax, 0xfffffc2b
push ebx
mov ebx, dword [esp + 0x28]
add ecx, 0xffffea91
push ebp
mov ebp, dword [esp + 0x30]
add ebx, 0xfffffcaf
push esi
mov esi, dword [esp + 0x24]
add ebp, 0xffffecd1
mov dword [esp + 0xc], eax
add esi, 0xffffecd1
lea eax, [edx + 0x2a4]
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x40]
push edi
mov edi, ecx
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x48]
lea eax, [ebp + 0x16cb]
add edx, 0xfffffcab
mov dword [esp + 0x2c], esi
add ecx, 0x1ac
mov dword [esp + 0x34], ebp
cmp esi, eax
mov dword [esp + 0x50], edx
mov esi, dword [esp + 0x4c]
jg 0x10003f9b
lea eax, [ebp + 0x139b]
cmp edi, eax
je 0x10003f63
add ebp, 0x11d7
mov dword [esp + 0x34], ebp
jmp 0x1000402e
mov eax, dword [esi + 0x13c]
mov ecx, dword [esi + 0x58]
or eax, ecx
cmp dword [esi + 0x2c], eax
jae 0x1000402e
mov eax, dword [esi + 0x40]
sub ecx, dword [esi + 0xf8]
imul eax, ebp
add ecx, edx
imul eax, dword [esp + 0x10]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edx, dword [esp + 0x50]
jmp 0x1000402e
mov eax, dword [esi + 0x16c]
or eax, edi
cmp dword [esp + 0x10], eax
jb 0x10004024
imul eax, dword [esi + 0x1b8], 0x132f
and eax, dword [esp + 0x10]
or dword [esp + 0x2c], eax
mov eax, edi
sub eax, dword [esi + 0x88]
or eax, 0x1a4d
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x194]
sub eax, dword [esp + 0x2c]
add eax, 0x1590
or dword [esi + 0x50], eax
mov eax, dword [esi]
add eax, dword [esi + 0x50]
push eax
mov eax, edx
or eax, ebp
imul eax, eax, 0x174d
push eax
mov eax, dword [esi + 0x1c4]
xor eax, ecx
or eax, dword [esi + 0xc8]
push eax
mov eax, dword [esi + 0x118]
xor eax, edi
add eax, dword [esi + 0x24]
push eax
mov eax, ebp
and eax, 0x139b
sub eax, dword [esi + 0x12c]
push eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov edx, dword [esp + 0x50]
jmp 0x1000402e
or ecx, ebx
imul eax, ecx, 0x1a4d
add edi, eax
mov eax, dword [esp + 0x2c]
add eax, 0x1550
cmp ebx, eax
je 0x100041d7
add edx, 0x269
lea eax, [edi + 0x1292]
mov dword [esp + 0x50], edx
cmp ebx, eax
jl 0x10004171
mov eax, dword fs:[0]
mov ecx, dword [esi + 0x180]
mov dword [esi + 0x1d0], eax
cmp dword [eax + 4], ecx
jb 0x10004114
mov ebp, dword [esi + 0x1cc]
add ebp, ecx
nop word [eax + eax]
mov eax, dword [esi + 0x1d0]
cmp dword [eax + 4], ebp
jae 0x1000410c
mov edx, dword [esi]
mov eax, dword [eax]
mov dword [esi + 0x1d0], eax
mov eax, dword [esi + 0x14]
imul ecx, dword [edx + 0x64], 0x8f039f42
xor eax, 0x9d6
cmp eax, ecx
jb 0x100040b9
imul eax, dword [esi + 0x50], 0x14e4
or dword [esi + 0xd0], eax
mov edi, dword [esi + 0x58]
mov ecx, dword [edx + 0x64]
sub ecx, 0x612
imul eax, dword [edi + 0x198], 0xcb9d8c71
cmp ecx, eax
ja 0x100040f7
mov edx, dword [esi + 0xd0]
lea ebx, [esi + 0x158]
nop
xor edx, ebx
inc ecx
mov dword [esi + 0xd0], edx
imul eax, dword [edi + 0x198], 0xcb9d8c71
cmp ecx, eax
jbe 0x100040e0
mov eax, dword [esi + 0x1d0]
mov ecx, dword [esi + 0x180]
cmp dword [eax + 4], ecx
jae 0x10004080
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x50]
mov eax, dword [esi + 0x44]
mov ebx, dword [esp + 0x30]
push esi
push ecx
mov eax, dword [eax + 0x28]
add eax, dword [esi + 0x3c]
mov dword [esi + 0x144], eax
lea eax, [ebx + 0x8b6]
push eax
mov eax, dword [esp + 0x38]
sub esp, 8
add eax, 0x174d
push eax
push ecx
mov ecx, dword [esp + 0x2c]
lea eax, [ecx + 0x813]
push eax
mov eax, dword [esp + 0x34]
add eax, 0x1a46
push eax
lea eax, [ebx + 3]
push eax
push ecx
lea eax, [ecx + 0x3d]
push eax
lea ecx, [edx + 0x260]
call fcn.1000fab0
mov edx, dword [esp + 0x80]
add esp, 0x30
lea eax, [ebp + 0x662]
cmp edx, eax
jg 0x100041d7
mov eax, dword [esp + 0x18]
add eax, 0xfffffb8f
cmp ebp, eax
jne 0x100041d7
mov edi, dword [esi + 0x90]
test edi, edi
je 0x100041d7
mov ecx, dword [esi]
mov eax, dword [esi + 0x19c]
sub eax, 0x13a4
or dword [ecx + 0x50], eax
mov ecx, dword [esi + 0x38]
mov eax, dword [esi + 0x19c]
add eax, 0x38
or dword [ecx + 0xc8], eax
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov ecx, dword [esi + 0x13c]
add ecx, 0x13a4
mov dword [esi + 0x50], ecx
test eax, eax
je 0x100041d7
push edi
push 0
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, dword [esp + 0x30]
pop edi
pop esi
pop ebp
add eax, 0x3f9
pop ebx
add esp, 0xc
ret