Function at 0x1003640
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x524
mov eax, dword [0x102d280]
xor eax, esp
mov dword [esp + 0x520], eax
mov eax, dword [esp + 0x528]
push ebx
push ebp
mov dword [esp + 0xc], eax
xor eax, eax
push esi
push edi
mov dword [esp + 0x1c], ecx
mov ebx, dword [esp + 0x55c]
mov esi, dword [esp + 0x544]
mov ebp, dword [esp + 0x53c]
mov byte [esp + 0x30], 0
mov ecx, 0x1f
lea edi, [esp + 0x31]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0xb0], 0
mov ecx, 0x1f
lea edi, [esp + 0xb1]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
cmp ebx, eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
jne 0x10036c6
lea ebx, [esp + 0x28]
cmp esi, eax
je 0x10036de
push esi
lea eax, [esp + 0x34]
push 0x102bbc0
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov edx, dword [esp + 0x554]
mov eax, dword [esp + 0x54c]
push ebx
mov edi, esi
mov esi, dword [esp + 0x55c]
push esi
push edx
mov edx, dword [esp + 0x20]
neg edi
sbb edi, edi
lea ecx, [esp + 0x3c]
and edi, ecx
mov ecx, dword [esp + 0x554]
push eax
push ecx
mov ecx, dword [esp + 0x30]
push edi
push ebp
push edx
mov edx, dword [esp + 0x38]
call fcn.010034a0
add esp, 0x20
test esi, 0x10000
mov dword [esp + 0x10], eax
jne 0x100375c
mov eax, dword [esp + 0x14]
push eax
mov eax, ebp
lea ecx, [esp + 0x134]
call fcn.010016e0
add esp, 4
or esi, 0x10000
lea ecx, [esp + 0x130]
mov dword [esp + 0x558], esi
mov dword [esp + 0x14], ecx
lea eax, [ebp*4]
push eax
call fcn.0100d7bd
mov esi, eax
add esp, 4
test esi, esi
je 0x10037f9
xor eax, eax
test ebp, ebp
jle 0x1003798
lea esp, [esp]
mov edx, dword [esp + 0x14]
movzx ecx, byte [edx + eax]
xor ecx, 0xc1c1c100
mov dword [esi + eax*4], ecx
add eax, 1
cmp eax, ebp
jl 0x1003780
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10037b4
push eax
lea edx, [esp + 0x34]
push 0x102bbb4
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov eax, dword [esp + 0x558]
mov ecx, dword [esp + 0x554]
mov edx, dword [esp + 0x550]
push ebx
push eax
mov eax, dword [esp + 0x550]
push ecx
mov ecx, dword [esp + 0x28]
push edx
mov edx, dword [esp + 0x28]
push eax
push edi
lea eax, [ebp*4]
push eax
push esi
call fcn.010034a0
add dword [esp + 0x30], eax
push esi
call fcn.0100d77e
add esp, 0x24
cmp dword [esp + 0x540], 0
je 0x100389d
lea eax, [ebp + ebp]
push eax
call fcn.0100d7bd
mov esi, eax
add esp, 4
test esi, esi
je 0x100389d
xor eax, eax
test ebp, ebp
jle 0x100383f
mov ecx, dword [esp + 0x14]
movzx dx, byte [ecx + eax]
add eax, 1
xor edx, 0xc100
cmp eax, ebp
mov word [esi + eax*2 - 2], dx
jl 0x1003824
mov eax, dword [esp + 0x20]
test eax, eax
je 0x100385b
push eax
lea eax, [esp + 0x34]
push 0x102bba8
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov ecx, dword [esp + 0x558]
mov edx, dword [esp + 0x554]
mov eax, dword [esp + 0x550]
push ebx
push ecx
mov ecx, dword [esp + 0x550]
push edx
mov edx, dword [esp + 0x24]
push eax
push ecx
mov ecx, dword [esp + 0x30]
push edi
lea eax, [ebp + ebp]
push eax
push esi
call fcn.010034a0
add dword [esp + 0x30], eax
push esi
call fcn.0100d77e
add esp, 0x24
push ebp
call fcn.0100d7bd
mov esi, eax
add esp, 4
test esi, esi
je 0x100395e
test ebp, ebp
jle 0x10038d8
mov ecx, dword [esp + 0x14]
sub ecx, esi
mov dword [esp + 0x24], ebp
mov edi, edi
mov dl, byte [ecx + eax]
xor dl, 0xc1
add dl, 1
xor dl, 0xc1
mov byte [eax], dl
add eax, 1
sub dword [esp + 0x24], 1
jne 0x10038c0
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10038f4
push eax
lea eax, [esp + 0x34]
push 0x102bbc0
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov edx, dword [esp + 0x18]
test edx, edx
je 0x1003917
push edx
lea ecx, [esp + 0xb4]
push 0x102bb98
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
mov edx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [esp + 0x558]
push ebx
push eax
mov eax, dword [esp + 0x55c]
neg edx
push eax
mov eax, dword [esp + 0x554]
sbb edx, edx
lea ecx, [esp + 0xbc]
and edx, ecx
mov ecx, dword [esp + 0x558]
push ecx
mov ecx, dword [esp + 0x2c]
push eax
push edi
push ebp
push esi
call fcn.010034a0
add dword [esp + 0x30], eax
push esi
call fcn.0100d77e
add esp, 0x24
lea eax, [ebp*4]
push eax
call fcn.0100d7bd
mov esi, eax
add esp, 4
test esi, esi
je 0x1003a2e
xor eax, eax
test ebp, ebp
jle 0x10039a1
mov edi, edi
mov ecx, dword [esp + 0x14]
movzx edx, byte [ecx + eax]
xor edx, 0xc1
add edx, 1
xor edx, 0xc1c1c1c1
mov dword [esi + eax*4], edx
add eax, 1
cmp eax, ebp
jl 0x1003980
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10039bd
push eax
lea eax, [esp + 0x34]
push 0x102bbb4
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov edx, dword [esp + 0x18]
test edx, edx
je 0x10039e0
push edx
lea ecx, [esp + 0xb4]
push 0x102bb98
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
mov edx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [esp + 0x558]
push ebx
push eax
mov eax, dword [esp + 0x55c]
neg edx
push eax
mov eax, dword [esp + 0x554]
sbb edx, edx
lea ecx, [esp + 0xbc]
and edx, ecx
mov ecx, dword [esp + 0x55c]
push ecx
mov ecx, dword [esp + 0x2c]
push eax
push edi
lea eax, [ebp*4]
push eax
push esi
call fcn.010034a0
add dword [esp + 0x30], eax
push esi
call fcn.0100d77e
add esp, 0x24
cmp dword [esp + 0x540], 0
je 0x1003b0f
lea eax, [ebp + ebp]
push eax
mov dword [esp + 0x28], eax
call fcn.0100d7bd
mov esi, eax
add esp, 4
test esi, esi
je 0x1003b0f
xor eax, eax
test ebp, ebp
jle 0x1003a83
lea ecx, [ecx]
mov ecx, dword [esp + 0x14]
mov dl, byte [ecx + eax]
xor dl, 0xc1
movzx cx, dl
add eax, 1
add ecx, 1
xor ecx, 0xc1c1
cmp eax, ebp
mov word [esi + eax*2 - 2], cx
jl 0x1003a60
mov eax, dword [esp + 0x20]
test eax, eax
je 0x1003a9f
push eax
lea edx, [esp + 0x34]
push 0x102bba8
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov ebp, dword [esp + 0x18]
test ebp, ebp
je 0x1003abe
push ebp
lea eax, [esp + 0xb4]
push 0x102bb98
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
mov ecx, dword [esp + 0x558]
push ebx
push ecx
mov ecx, dword [esp + 0x55c]
mov edx, ebp
neg edx
push ecx
mov ecx, dword [esp + 0x554]
sbb edx, edx
lea eax, [esp + 0xbc]
and edx, eax
mov eax, dword [esp + 0x55c]
push eax
mov eax, dword [esp + 0x34]
push ecx
mov ecx, dword [esp + 0x30]
push edi
push eax
push esi
call fcn.010034a0
mov edi, dword [esp + 0x30]
push esi
add edi, eax
call fcn.0100d77e
add esp, 0x24
jmp 0x1003b13
mov edi, dword [esp + 0x10]
lea ecx, [esp + 0x28]
cmp ebx, ecx
jne 0x1003b28
cmp dword [ebx + 4], 0
je 0x1003b28
mov esi, ebx
call fcn.01001a40
mov ecx, dword [esp + 0x530]
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0100ffd5
add esp, 0x524
ret