Function at 0x10001ea0
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 8]
sub esp, 0x3c
push ebp
push esi
mov esi, edx
mov edx, dword [esp + 0x50]
xor ebp, ebp
cmp edx, ebp
push edi
mov edi, eax
mov eax, dword [esp + 0x4c]
jne 0x10001ec7
pop edi
pop esi
xor eax, eax
pop ebp
add esp, 0x3c
ret 0x14
cmp eax, ebp
je 0x10001ed3
cmp ecx, ebp
je 0x10001ed3
cmp edi, ebp
jne 0x10001edf
pop edi
pop esi
or eax, 0xffffffff
pop ebp
add esp, 0x3c
ret 0x14
mov dword [esi + 0x414], eax
dec eax
mov dword [esi + 0x420], eax
mov dword [esi + 0x410], ecx
mov eax, 0xbfcdc9ba
xor edx, edx
lea esp, [esp]
mov ecx, eax
add eax, eax
shr ecx, 0x1f
or ecx, eax
movzx eax, byte [edx + str._r_n_r_naPLib_v0.44_____the_smaller_the_better_:__r_nCopyright__c__1998_2008_by_Joergen_Ibsen__All_Rights_Reserved._r_n_r_nLicensed__company_license__to:_Jeremy_Collake._r_n_r_nMore_information:_http:__www.ibsensoftware.com__r_n_r_n]
xor ecx, eax
mov eax, ecx
shr eax, 0x1f
add ecx, ecx
or eax, ecx
movzx ecx, byte [edx + 0x10004029]
xor eax, ecx
mov ecx, eax
add eax, eax
shr ecx, 0x1f
or ecx, eax
movzx eax, byte [edx + 0x1000402a]
xor ecx, eax
mov eax, ecx
shr eax, 0x1f
add ecx, ecx
or eax, ecx
movzx ecx, byte [edx + 0x1000402b]
add edx, 4
xor eax, ecx
cmp edx, 0x100
jb 0x10001f00
cmp eax, ebp
jne 0x10002903
mov dword [esi], edi
lea edx, [edi + 0x5a018]
lea ecx, [esi + 4]
mov edi, 0x100
push ebx
lea esp, [esp]
mov dword [ecx], edx
xor eax, eax
mov ebx, dword [ecx]
mov dword [eax + ebx], ebp
add eax, 4
cmp eax, 0x400
jb 0x10001f74
add edx, 0x400
add ecx, 4
dec edi
jne 0x10001f70
mov edx, dword [esi + 0x414]
or eax, 0xffffffff
mov dword [esi + 0x408], edx
mov edx, dword [esi]
mov ecx, 1
mov dword [esi + 0x424], eax
mov dword [esi + 0x404], ecx
mov dword [esi + 0x40c], ebp
mov dword [edx], ebp
mov edx, dword [esi + 0x414]
mov edi, dword [esi + 0x410]
mov dword [esi + 0x428], ebp
mov dl, byte [edx]
mov byte [edi], dl
mov ebx, dword [esi + 0x414]
mov edi, dword [esi + 0x410]
inc ebx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x58]
inc edi
dec eax
cmp eax, ecx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x1c], ebp
mov dword [esi + 0x414], ebx
mov dword [esi + 0x410], edi
mov dword [esi + 0x41c], ecx
mov dword [esp + 0x10], ecx
jbe 0x100027df
lea esp, [esp]
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x10002054
mov ecx, dword [esp + 0x1c]
inc ecx
test cl, cl
mov dword [esp + 0x1c], ecx
jne 0x10002054
mov ecx, dword [esp + 0x60]
mov edx, dword [esi + 0x410]
mov ebx, dword [esp + 0x54]
push ecx
mov ecx, dword [esi + 0x414]
sub edx, ebx
push edx
sub ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x60]
push ecx
push edx
call eax
add esp, 0x10
test eax, eax
je 0x100027ac
mov eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x20]
jne 0x10002070
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x38], edi
mov dword [esp + 0x34], ebx
jmp 0x10002095
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x58]
mov edx, dword [esi + 0x414]
sub ecx, eax
push ecx
push eax
push edx
lea eax, [esp + 0x40]
push eax
call fcn.10001ba0
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
cmp edi, 2
jl 0x10002627
mov eax, dword [esi + 0x424]
cmp ebx, eax
mov dword [esp + 0x18], 0
jne 0x10002117
cmp ebp, 1
jbe 0x100023fc
mov ebx, dword [esp + 0x3c]
cmp ebx, eax
je 0x100023fc
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push ebp
sub eax, ebp
push ecx
call fcn.100014d0
mov dword [esp + 0x24], eax
mov edx, ebp
mov eax, ebx
mov ecx, esi
call fcn.10001890
mov ecx, dword [esp + 0x24]
cmp eax, ecx
jge 0x100023fc
mov eax, ebx
cmp eax, 0x500
jl 0x10002103
cmp ebp, 2
je 0x100023fc
cmp eax, 0x7d00
jl 0x10002113
cmp ebp, 3
je 0x100023fc
mov ebx, dword [esp + 0x34]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x58]
mov edx, dword [esi + 0x414]
sub eax, ecx
inc ecx
mov dword [esp + 0x24], eax
dec eax
push eax
push ecx
inc edx
push edx
lea eax, [esp + 0x50]
push eax
mov dword [esp + 0x30], ecx
call fcn.10001ba0
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x44]
cmp eax, ebx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x20], ecx
mov ecx, esi
jl 0x10002185
call fcn.10001890
mov dword [esp + 0x28], eax
mov edx, edi
mov eax, ebx
mov ecx, esi
call fcn.10001890
mov ecx, eax
mov eax, dword [esp + 0x28]
sub ecx, eax
shl ecx, 1
mov eax, 0x38e38e39
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
jmp 0x100021a8
call fcn.10001890
mov dword [esp + 0x28], eax
mov edx, edi
mov eax, ebx
mov ecx, esi
call fcn.10001890
mov ecx, dword [esp + 0x28]
sub eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
mov ebx, dword [esp + 0x48]
add eax, ebx
cmp edi, eax
jge 0x100021ba
mov dword [esp + 0x18], 1
test ebp, ebp
jbe 0x100021f0
cmp ebx, edi
jl 0x100021ee
mov eax, dword [esp + 0x44]
mov edx, ebx
mov ecx, esi
call fcn.10001890
mov ebx, eax
mov eax, dword [esp + 0x34]
mov edx, edi
mov ecx, esi
call fcn.10001890
cmp ebx, eax
mov ebx, dword [esp + 0x48]
jge 0x100021ee
mov dword [esp + 0x18], 1
test ebp, ebp
jne 0x1000223c
cmp ebx, edi
jge 0x1000223c
mov ecx, dword [esi + 0x414]
mov eax, dword [esp + 0x10]
push 1
push ecx
call fcn.100014d0
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x44]
mov edx, ebx
mov ecx, esi
call fcn.10001890
mov ecx, dword [esp + 0x28]
lea ebx, [ecx + eax + 1]
mov eax, dword [esp + 0x34]
mov edx, edi
mov ecx, esi
call fcn.10001890
cmp ebx, eax
jle 0x1000223c
mov dword [esp + 0x18], 0
jmp 0x10002248
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x1000260a
cmp edi, 2
jle 0x100023fc
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 0x414]
add edx, 0xfffffffe
push edx
add eax, 2
push eax
add ecx, 2
push ecx
lea edx, [esp + 0x38]
push edx
call fcn.10001ba0
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x34]
cmp eax, ebx
mov edx, dword [esp + 0x30]
mov ecx, esi
jl 0x100022ac
call fcn.10001890
mov dword [esp + 0x28], eax
mov edx, edi
mov eax, ebx
mov ecx, esi
call fcn.10001890
mov ecx, dword [esp + 0x28]
sub eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
jmp 0x100022da
call fcn.10001890
mov dword [esp + 0x28], eax
mov edx, edi
mov eax, ebx
mov ecx, esi
call fcn.10001890
mov ecx, eax
mov eax, dword [esp + 0x28]
sub ecx, eax
shl ecx, 1
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x30]
add eax, edx
cmp edi, eax
jge 0x100022ec
mov dword [esp + 0x18], 1
test ebp, ebp
jbe 0x10002316
cmp edx, edi
jl 0x10002316
mov eax, dword [esp + 0x2c]
mov ecx, esi
call fcn.10001890
mov ebx, eax
mov eax, dword [esp + 0x34]
mov edx, edi
mov ecx, esi
call fcn.10001890
cmp ebx, eax
jl 0x1000260a
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x1000260a
cmp edi, 3
jle 0x100023fc
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov eax, dword [esi + 0x414]
add ecx, 0xfffffffd
push ecx
add edx, 3
push edx
add eax, 3
push eax
lea ecx, [esp + 0x38]
push ecx
call fcn.10001ba0
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x34]
cmp eax, ebx
mov edx, dword [esp + 0x30]
mov ecx, esi
jl 0x10002386
call fcn.10001890
mov dword [esp + 0x28], eax
mov edx, edi
mov eax, ebx
mov ecx, esi
call fcn.10001890
mov ecx, dword [esp + 0x28]
sub eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
jmp 0x100023b4
call fcn.10001890
mov dword [esp + 0x28], eax
mov edx, edi
mov eax, ebx
mov ecx, esi
call fcn.10001890
mov ecx, eax
mov eax, dword [esp + 0x28]
sub ecx, eax
shl ecx, 1
mov eax, 0x2e8ba2e9
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 0x30]
add eax, edx
cmp edi, eax
jge 0x100023c6
mov dword [esp + 0x18], 1
test ebp, ebp
jbe 0x100023f0
cmp edx, edi
jl 0x100023f0
mov eax, dword [esp + 0x2c]
mov ecx, esi
call fcn.10001890
mov ebx, eax
mov eax, dword [esp + 0x34]
mov edx, edi
mov ecx, esi
call fcn.10001890
cmp ebx, eax
jl 0x1000260a
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x1000260a
test ebp, ebp
je 0x10002549
cmp ebp, 1
jbe 0x10002536
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x58]
mov ecx, ebp
sub ecx, edi
lea eax, [ecx + edx]
cmp eax, ebp
jbe 0x10002422
mov eax, ebp
push eax
mov eax, dword [esp + 0x18]
sub edi, ebp
push edi
push eax
lea ecx, [esp + 0x38]
push ecx
call fcn.10001ba0
cmp dword [esp + 0x30], ebp
jb 0x1000246b
mov eax, dword [esp + 0x2c]
mov edx, ebp
mov ecx, esi
call fcn.10001890
mov ebx, eax
mov eax, dword [esp + 0x3c]
mov edx, ebp
mov ecx, esi
call fcn.10001890
cmp eax, ebx
jle 0x1000246b
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x14]
push ebp
push ecx
mov eax, edi
call fcn.100014d0
mov ebx, eax
mov eax, dword [esp + 0x3c]
mov edx, ebp
mov ecx, esi
call fcn.10001890
cmp eax, ebx
jge 0x10002516
mov eax, dword [esi + 0x424]
mov ebx, dword [esp + 0x34]
cmp ebx, eax
jne 0x100024de
mov edx, dword [esp + 0x14]
push ebp
push edx
mov eax, edi
call fcn.100014d0
mov edx, dword [esp + 0x38]
mov edi, eax
mov eax, ebx
mov ecx, esi
call fcn.10001890
mov edx, dword [esp + 0x38]
add edi, eax
lea eax, [ebx + 1]
mov ecx, esi
call fcn.10001890
mov ebx, eax
mov eax, dword [esp + 0x3c]
mov edx, ebp
mov ecx, esi
call fcn.10001890
add ebx, eax
cmp edi, ebx
jle 0x10002516
mov ebx, dword [esp + 0x3c]
cmp ebx, dword [esi + 0x424]
jne 0x100024f4
mov eax, dword [esi + 0x428]
test eax, eax
je 0x1000250e
cmp ebx, 0x500
jl 0x10002501
cmp ebp, 2
je 0x10002516
cmp ebx, 0x7d00
jl 0x1000250e
cmp ebp, 3
je 0x10002516
push ebp
call fcn.10001900
jmp 0x10002547
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edi, edi
mov eax, ebx
sub eax, ebp
push eax
mov eax, esi
call fcn.10001530
inc edi
dec ebp
jne 0x10002520
mov dword [esp + 0x14], edi
jmp 0x10002549
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
dec ecx
push ecx
mov eax, esi
call fcn.10001530
xor ebp, ebp
mov ebx, dword [esp + 0x38]
cmp ebx, 3
jg 0x100025e8
mov edx, dword [esi + 0x414]
mov eax, dword [esp + 0x10]
push ebx
push edx
call fcn.100014d0
mov edi, eax
mov eax, dword [esp + 0x34]
mov edx, ebx
mov ecx, esi
call fcn.10001890
cmp eax, edi
jg 0x100025a3
mov eax, dword [esp + 0x34]
cmp eax, dword [esi + 0x424]
jne 0x10002590
mov ecx, dword [esi + 0x428]
test ecx, ecx
je 0x100025e8
cmp eax, 0x500
jl 0x1000259c
cmp ebx, 2
je 0x100025a3
cmp eax, 0x7d00
jl 0x100025e8
test ebx, ebx
je 0x100025da
mov dword [esp + 0x24], ebx
jmp 0x100025b0
mov eax, dword [esp + 0x10]
mov edi, dword [esi + 0x414]
push eax
mov eax, esi
call fcn.10001530
mov ecx, dword [esi + 0x414]
mov eax, dword [esp + 0x24]
inc ecx
dec eax
mov dword [esi + 0x414], ecx
mov dword [esp + 0x24], eax
jne 0x100025b0
mov ecx, dword [esp + 0x10]
lea edx, [ecx + ebx - 1]
mov dword [esp + 0x10], edx
jmp 0x10002646
mov edi, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
push edi
call fcn.10001900
add dword [esi + 0x414], edi
mov eax, dword [esp + 0x10]
lea ecx, [eax + edi - 1]
mov dword [esp + 0x10], ecx
jmp 0x10002646
test ebp, ebp
jne 0x10002624
mov edx, dword [esp + 0x34]
mov eax, dword [esi + 0x414]
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x14], eax
inc ebp
jmp 0x10002640
test ebp, ebp
je 0x1000262e
inc ebp
jmp 0x10002640
mov ecx, dword [esp + 0x10]
mov edi, dword [esi + 0x414]
push ecx
mov eax, esi
call fcn.10001530
inc dword [esi + 0x414]
test ebp, ebp
je 0x1000272b
cmp ebp, dword [esp + 0x40]
jne 0x1000272b
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x58]
mov edx, ebp
sub edx, edi
add eax, edx
cmp eax, ebp
jbe 0x1000266c
mov eax, ebp
mov ecx, dword [esp + 0x14]
push eax
sub edi, ebp
push edi
push ecx
lea edx, [esp + 0x38]
push edx
call fcn.10001ba0
cmp dword [esp + 0x30], ebp
jb 0x100026b7
mov eax, dword [esp + 0x2c]
mov edx, ebp
mov ecx, esi
call fcn.10001890
mov ebx, eax
mov eax, dword [esp + 0x3c]
mov edx, ebp
mov ecx, esi
call fcn.10001890
cmp eax, ebx
jle 0x100026b7
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], eax
jmp 0x100026bb
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x14]
push ebp
push ecx
mov eax, edi
call fcn.100014d0
mov edi, eax
mov edx, ebp
mov eax, ebx
mov ecx, esi
call fcn.10001890
cmp eax, edi
jge 0x1000270f
cmp ebx, dword [esi + 0x424]
jne 0x100026eb
mov eax, dword [esi + 0x428]
test eax, eax
je 0x10002705
cmp ebx, 0x500
jl 0x100026f8
cmp ebp, 2
je 0x1000270f
cmp ebx, 0x7d00
jl 0x10002705
cmp ebp, 3
je 0x1000270f
push ebp
call fcn.10001900
xor ebp, ebp
jmp 0x1000272b
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, ebx
sub edx, ebp
push edx
mov eax, esi
call fcn.10001530
inc edi
dec ebp
jne 0x10002717
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x58]
inc eax
dec ecx
cmp eax, ecx
mov dword [esp + 0x10], eax
jb 0x10002010
test ebp, ebp
je 0x100027df
cmp ebp, 1
mov edi, dword [esp + 0x14]
jbe 0x100027d2
push ebp
sub eax, ebp
push edi
call fcn.100014d0
mov ebx, eax
mov eax, dword [esp + 0x3c]
mov edx, ebp
mov ecx, esi
call fcn.10001890
cmp eax, ebx
jg 0x100027b9
mov eax, dword [esp + 0x3c]
cmp eax, dword [esi + 0x424]
jne 0x10002788
mov ecx, dword [esi + 0x428]
test ecx, ecx
je 0x100027a0
cmp eax, 0x500
jl 0x10002794
cmp ebp, 2
je 0x100027b9
cmp eax, 0x7d00
jl 0x100027a0
cmp ebp, 3
je 0x100027b9
mov ebx, dword [esp + 0x3c]
push ebp
call fcn.10001900
jmp 0x100027df
pop ebx
pop edi
pop esi
or eax, 0xffffffff
pop ebp
add esp, 0x3c
ret 0x14
mov ebx, dword [esp + 0x10]
lea ecx, [ecx]
mov eax, ebx
sub eax, ebp
push eax
mov eax, esi
call fcn.10001530
inc edi
dec ebp
jne 0x100027c0
jmp 0x100027df
mov ecx, dword [esp + 0x10]
dec ecx
push ecx
mov eax, esi
call fcn.10001530
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp + 0x58]
cmp ebx, ebp
jae 0x10002810
jmp 0x100027f0
mov edi, dword [esi + 0x414]
push ebx
mov eax, esi
call fcn.10001530
mov edx, dword [esi + 0x414]
inc edx
inc ebx
cmp ebx, ebp
mov dword [esi + 0x414], edx
jb 0x100027f0
dec dword [esi + 0x41c]
mov ecx, 8
jne 0x10002836
mov eax, dword [esi + 0x410]
mov dword [esi + 0x418], eax
inc eax
mov dword [esi + 0x41c], ecx
mov dword [esi + 0x410], eax
mov eax, dword [esi + 0x418]
mov dl, byte [eax]
shl dl, 1
inc dl
mov byte [eax], dl
dec dword [esi + 0x41c]
jne 0x10002865
mov eax, dword [esi + 0x410]
mov dword [esi + 0x418], eax
inc eax
mov dword [esi + 0x41c], ecx
mov dword [esi + 0x410], eax
mov eax, dword [esi + 0x418]
mov dl, byte [eax]
shl dl, 1
inc dl
mov byte [eax], dl
dec dword [esi + 0x41c]
jne 0x10002894
mov eax, dword [esi + 0x410]
mov dword [esi + 0x418], eax
inc eax
mov dword [esi + 0x41c], ecx
mov dword [esi + 0x410], eax
mov eax, dword [esi + 0x418]
shl byte [eax], 1
mov eax, dword [esi + 0x410]
mov byte [eax], 0
mov ebx, dword [esi + 0x410]
mov eax, dword [esi + 0x418]
mov ecx, dword [esi + 0x41c]
inc ebx
mov dword [esi + 0x410], ebx
mov dl, byte [eax]
dec ecx
shl dl, cl
mov byte [eax], dl
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x100028f8
mov ecx, dword [esp + 0x60]
mov edx, dword [esi + 0x410]
mov ebx, dword [esp + 0x54]
push ecx
mov ecx, dword [esi + 0x414]
sub edx, ebx
push edx
sub ecx, dword [esp + 0x58]
push ecx
push ebp
call eax
add esp, 0x10
test eax, eax
je 0x100027ac
mov eax, dword [esi + 0x410]
sub eax, dword [esp + 0x54]
pop ebx
pop edi
pop esi
pop ebp
add esp, 0x3c
ret 0x14