Function at 0x1003e420
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
mov esi, ecx
push edi
cmp dword [esi + 0x1064c8], 0
mov ebx, dword [esi + 0x106518]
mov dword [ebp - 8], ebx
jne 0x1003e459
mov dword [esi + 0x106524], ebx
mov dword [esi + 0x10651c], 0
mov dword [esi + 0x106520], 0
jmp 0x1003e489
mov edi, dword [esi + 0x106524]
cmp edi, ebx
je 0x1003e48b
mov dword [esi + 0x106524], ebx
lea ecx, [esi + 0x601c]
jge 0x1003e478
call fcn.100491e0
jmp 0x1003e47d
call fcn.10049240
mov dword [esi + 0x106520], eax
mov dword [esi + 0x10651c], eax
mov edi, ebx
mov ebx, dword [esi + 0x10651c]
xor ecx, ecx
mov dword [ebp - 4], ecx
test ebx, ebx
jle 0x1003e500
shl edi, 0xc
sub edi, dword [esi + 0x106528]
mov eax, edi
cdq
idiv ebx
cmp byte [esi + 0x1064c0], 2
mov ecx, eax
mov dword [ebp - 4], ecx
jne 0x1003e500
mov ecx, dword [esi + 0x106520]
mov eax, 0x2710
cdq
lea ecx, [ecx + 1]
idiv ecx
mov ecx, 0x32
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [ebp - 4]
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jle 0x1003e4fd
nop dword [eax]
add ebx, dword [esi + 0x106520]
mov eax, edi
cdq
idiv ebx
mov dword [ebp - 4], eax
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
jg 0x1003e4e0
mov dword [esi + 0x10651c], ebx
mov ecx, dword [ebp - 4]
mov eax, dword [esi + 0x6030]
cmp eax, 1
jne 0x1003e5ea
mov ebx, dword [ebp + 8]
lea edi, [esi + 0xc]
test ebx, ebx
jle 0x1003ea1a
nop dword [eax]
cmp dword [esi + 0x10651c], 0
push 0
jle 0x1003e585
add dword [esi + 0x106528], ecx
mov eax, dword [edi]
imul dword [esi + 0x106528]
push 0x100000
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e568
jg 0x1003e552
cmp eax, 0x7fffffff
jbe 0x1003e568
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
mov dword [edi], eax
dec dword [esi + 0x10651c]
jmp 0x1003e5d2
cmp edx, 0xffffffff
jl 0x1003e576
jg 0x1003e57b
cmp eax, 0x80000000
ja 0x1003e57b
mov eax, 0x80000000
mov dword [edi], eax
dec dword [esi + 0x10651c]
jmp 0x1003e5d2
mov eax, dword [edi]
imul dword [ebp - 8]
push 0x100
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e5b1
jg 0x1003e5a3
cmp eax, 0x7fffffff
jbe 0x1003e5b1
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e5c4
cmp edx, 0xffffffff
jl 0x1003e5bf
jg 0x1003e5c4
cmp eax, 0x80000000
ja 0x1003e5c4
mov eax, 0x80000000
mov dword [edi], eax
mov eax, dword [ebp - 8]
shl eax, 0xc
mov dword [esi + 0x106528], eax
mov ecx, dword [ebp - 4]
add edi, 4
sub ebx, 1
jne 0x1003e520
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 2
jne 0x1003e773
mov eax, dword [ebp + 8]
lea edi, [esi + 0xc]
mov dword [ebp + 8], eax
test eax, eax
jle 0x1003ea1a
nop dword [eax]
nop dword [eax + eax]
cmp dword [esi + 0x10651c], 0
push 0
jle 0x1003e6c8
add dword [esi + 0x106528], ecx
mov eax, dword [edi]
imul dword [esi + 0x106528]
push 0x100000
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e654
jg 0x1003e646
cmp eax, 0x7fffffff
jbe 0x1003e654
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e667
cmp edx, 0xffffffff
jl 0x1003e662
jg 0x1003e667
cmp eax, 0x80000000
ja 0x1003e667
mov eax, 0x80000000
mov dword [edi], eax
mov eax, dword [edi + 4]
imul dword [esi + 0x106528]
push 0
push 0x100000
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e6a7
jg 0x1003e68d
cmp eax, 0x7fffffff
jbe 0x1003e6a7
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
mov dword [edi + 4], eax
dec dword [esi + 0x10651c]
jmp 0x1003e75a
cmp edx, 0xffffffff
jl 0x1003e6b5
jg 0x1003e6ba
cmp eax, 0x80000000
ja 0x1003e6ba
mov eax, 0x80000000
mov dword [edi + 4], eax
dec dword [esi + 0x10651c]
jmp 0x1003e75a
mov eax, dword [edi]
mov ebx, dword [ebp - 8]
imul ebx
push 0x100
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e6f6
jg 0x1003e6e8
cmp eax, 0x7fffffff
jbe 0x1003e6f6
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e709
cmp edx, 0xffffffff
jl 0x1003e704
jg 0x1003e709
cmp eax, 0x80000000
ja 0x1003e709
mov eax, 0x80000000
mov dword [edi], eax
mov eax, dword [edi + 4]
imul ebx
push 0
push 0x100
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e739
jg 0x1003e72b
cmp eax, 0x7fffffff
jbe 0x1003e739
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e74c
cmp edx, 0xffffffff
jl 0x1003e747
jg 0x1003e74c
cmp eax, 0x80000000
ja 0x1003e74c
mov eax, 0x80000000
mov dword [edi + 4], eax
mov eax, ebx
shl eax, 0xc
mov dword [esi + 0x106528], eax
mov ecx, dword [ebp - 4]
add edi, 8
sub dword [ebp + 8], 1
jne 0x1003e610
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 4
jne 0x1003ea1a
mov eax, dword [ebp + 8]
lea edi, [esi + 0x200c]
mov dword [ebp + 8], eax
test eax, eax
jle 0x1003ea1a
cmp dword [esi + 0x10651c], 0
push 0
jle 0x1003e8e4
add dword [esi + 0x106528], ecx
mov eax, dword [edi - 0x2000]
imul dword [esi + 0x106528]
push 0x100000
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e7d8
jg 0x1003e7ca
cmp eax, 0x7fffffff
jbe 0x1003e7d8
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e7eb
cmp edx, 0xffffffff
jl 0x1003e7e6
jg 0x1003e7eb
cmp eax, 0x80000000
ja 0x1003e7eb
mov eax, 0x80000000
mov dword [edi - 0x2000], eax
mov eax, dword [edi - 0x1ffc]
imul dword [esi + 0x106528]
push 0
push 0x100000
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e826
jg 0x1003e818
cmp eax, 0x7fffffff
jbe 0x1003e826
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e839
cmp edx, 0xffffffff
jl 0x1003e834
jg 0x1003e839
cmp eax, 0x80000000
ja 0x1003e839
mov eax, 0x80000000
mov dword [edi - 0x1ffc], eax
mov eax, dword [edi]
imul dword [esi + 0x106528]
push 0
push 0x100000
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e870
jg 0x1003e862
cmp eax, 0x7fffffff
jbe 0x1003e870
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e883
cmp edx, 0xffffffff
jl 0x1003e87e
jg 0x1003e883
cmp eax, 0x80000000
ja 0x1003e883
mov eax, 0x80000000
mov dword [edi], eax
mov eax, dword [edi + 4]
imul dword [esi + 0x106528]
push 0
push 0x100000
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e8c3
jg 0x1003e8a9
cmp eax, 0x7fffffff
jbe 0x1003e8c3
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
mov dword [edi + 4], eax
dec dword [esi + 0x10651c]
jmp 0x1003ea0a
cmp edx, 0xffffffff
jl 0x1003e8d1
jg 0x1003e8d6
cmp eax, 0x80000000
ja 0x1003e8d6
mov eax, 0x80000000
mov dword [edi + 4], eax
dec dword [esi + 0x10651c]
jmp 0x1003ea0a
mov eax, dword [edi - 0x2000]
mov ebx, dword [ebp - 8]
imul ebx
push 0x100
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e916
jg 0x1003e908
cmp eax, 0x7fffffff
jbe 0x1003e916
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e929
cmp edx, 0xffffffff
jl 0x1003e924
jg 0x1003e929
cmp eax, 0x80000000
ja 0x1003e929
mov eax, 0x80000000
mov dword [edi - 0x2000], eax
mov eax, dword [edi - 0x1ffc]
imul ebx
push 0
push 0x100
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e960
jg 0x1003e952
cmp eax, 0x7fffffff
jbe 0x1003e960
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e973
cmp edx, 0xffffffff
jl 0x1003e96e
jg 0x1003e973
cmp eax, 0x80000000
ja 0x1003e973
mov eax, 0x80000000
mov dword [edi - 0x1ffc], eax
mov eax, dword [edi]
imul ebx
push 0
push 0x100
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e9a6
jg 0x1003e998
cmp eax, 0x7fffffff
jbe 0x1003e9a6
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e9b9
cmp edx, 0xffffffff
jl 0x1003e9b4
jg 0x1003e9b9
cmp eax, 0x80000000
ja 0x1003e9b9
mov eax, 0x80000000
mov dword [edi], eax
mov eax, dword [edi + 4]
imul ebx
push 0
push 0x100
push edx
push eax
call fcn.101177e0
test edx, edx
jl 0x1003e9e9
jg 0x1003e9db
cmp eax, 0x7fffffff
jbe 0x1003e9e9
mov eax, 0x7fffffff
mov dword [ebp - 0xc], 0
jmp 0x1003e9fc
cmp edx, 0xffffffff
jl 0x1003e9f7
jg 0x1003e9fc
cmp eax, 0x80000000
ja 0x1003e9fc
mov eax, 0x80000000
mov dword [edi + 4], eax
mov eax, ebx
shl eax, 0xc
mov dword [esi + 0x106528], eax
mov ecx, dword [ebp - 4]
add edi, 8
sub dword [ebp + 8], 1
jne 0x1003e790
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4