Function at 0x1001f510
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x114
push ebx
lea edx, [eax + 0xeee]
push esi
mov esi, dword [ebp + 8]
mov ecx, eax
push edi
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x2c], edx
cmp eax, edx
jbe 0x1001f546
mov eax, dword [ebp - 0x2c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x30]
mov esi, dword [ebp + 8]
mov ebx, dword [ebp - 0x3c]
cmp ecx, 0x24dc
ja 0x1001f711
je 0x1001f628
lea eax, [ecx - 0x2419]
cmp eax, 0x9c
ja case.0x1001f573.9242
movzx eax, byte [eax + 0x1002029c]
jmp dword [eax*4 + 0x10020284]
mov eax, dword [ebp - 0x10]
xor ecx, ecx
inc eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.1002be75
add esp, 4
mov dword [ebp - 0x48], eax
jmp case.0x1001f573.9242
mov esi, dword [ebp + 8]
call fcn.10011d00
test eax, eax
je 0x1002026e
mov dword [ebp - 0x10], 0
jmp case.0x1001f573.9242
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x1001f5dc
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x1001f5c5
sub eax, edx
sar eax, 1
mov dword [ebp - 0x40], eax
jmp case.0x1001f573.9242
xor eax, eax
mov dword [ebp - 0x40], eax
jmp case.0x1001f573.9242
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x14], eax
jmp case.0x1001f573.9242
mov ecx, dword [ebp + 8]
mov edi, dword [ebp - 0x40]
test ecx, ecx
je 0x1001f620
jmp 0x1001f600
mov eax, dword [ecx]
lea esi, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x1001f605
mov ecx, dword [ecx + 4]
sub eax, esi
sar eax, 1
add eax, edi
add dword [ebp - 0x10], eax
test ecx, ecx
jne 0x1001f600
sub dword [ebp - 0x10], edi
jmp case.0x1001f573.9242
mov edi, esi
mov dword [ebp - 8], esi
test esi, esi
je case.0x1001f573.9242
mov ebx, dword [ebp - 0x14]
jmp 0x1001f640
cmp dword [edi], 0
je 0x1001f6fb
mov esi, 0x5375
mov dword [ebp - 0x14], esi
mov eax, esi
sub eax, 0x5375
je 0x1001f6cb
sub eax, 0x3e
jne 0x1001f6e9
cmp byte [ebp - 1], al
je 0x1001f6b2
cmp dword [edi + 4], eax
setne al
mov byte [ebp - 1], al
test al, al
je 0x1001f6b2
mov eax, dword [ebp + 0xc]
mov edx, eax
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x1001f680
sub eax, edx
lea edi, [ebx - 2]
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x1001f690
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp - 0x14]
mov edi, dword [ebp - 8]
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x1001f6b7
sub eax, edx
sar eax, 1
lea ebx, [ebx + eax*2]
jmp 0x1001f6e9
mov ecx, dword [edi]
mov edx, ebx
nop
movzx eax, word [ecx]
mov word [edx], ax
add ecx, 2
add edx, 2
test ax, ax
jne 0x1001f6d0
cmp dword [ebp + 0xc], 0
setne byte [ebp - 1]
add esi, 0x3e
mov dword [ebp - 0x14], esi
cmp esi, 0x53b3
jbe 0x1001f651
mov edi, dword [edi + 4]
mov dword [ebp - 8], edi
test edi, edi
jne 0x1001f640
mov dword [ebp - 0x14], ebx
jmp case.0x1001f573.9242
cmp ecx, 0x52be
ja 0x1001fd1f
je 0x1001f783
cmp ecx, 0x2503
je 0x10020277
cmp ecx, 0x5297
jne case.0x1001f573.9242
lea edx, [ebp - 0x16]
mov dword [ebp - 8], 1
mov ecx, dword [ebp - 8]
push edx
lea eax, [ebp - 0x24]
push eax
mov dword [0x10188d78], ecx
mov dword [ebp - 0x24], 0x4020100
mov dword [ebp - 0x20], 0xa080705
mov dword [ebp - 0x1c], 0x16100c0b
mov word [ebp - 0x18], 0x1a17
call fcn.1002bd80
mov ecx, dword [0x10188d78]
add esp, 8
test ecx, ecx
setne byte [ebp - 4]
jmp case.0x1001f573.9242
cmp byte [ebp - 4], 0
je 0x1001fd10
mov eax, 0x423e
mov dword [ebp - 8], eax
cmp eax, 0x4448
ja 0x1001f944
je 0x1001f93d
cmp eax, 0x4343
ja 0x1001f904
je 0x1001f894
sub eax, 0x423e
je 0x1001f842
sub eax, 0x57
je 0x1001f804
sub eax, 0x57
jne 0x1001fcf3
push 4
lea edx, [ebp - 0xb8]
push 0x10163848
push edx
call fcn.100fdb50
mov eax, dword [0x101618f8]
mov cx, word [0x101618fc]
add esp, 0xc
mov dword [ebp - 0xb6], eax
mov word [ebp - 0xb2], cx
jmp 0x1001fcf3
mov dword [ebp - 0xc2], 0x65
xor eax, eax
movzx ecx, word [eax + 0x10164414]
mov word [ebp + eax - 0xc0], cx
add eax, 2
test cx, cx
jne 0x1001f810
push 8
lea ecx, [ebp - 0xbe]
push 0x10164418
push ecx
call fcn.100fdb50
add esp, 0xc
jmp 0x1001fcf3
xor eax, eax
jmp 0x1001f850
movzx ecx, word [eax + 0x10164420]
mov word [ebp + eax - 0xcc], cx
add eax, 2
test cx, cx
jne 0x1001f850
lea eax, [ebp - 0xcc]
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x1001f870
mov edx, dword [0x10164428]
mov cx, word [0x1016442c]
mov dword [eax], edx
mov word [eax + 4], cx
jmp 0x1001fcf3
lea edi, [ebp - 0xcc]
add edi, 0xfffffffe
lea ecx, [ecx]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x1001f8a0
mov edx, dword [0x1016440c]
push 1
lea eax, [ebp - 0xcc]
push 0x10164410
push eax
mov dword [edi], edx
call fcn.100fe1b7
lea eax, [ebp - 0xcc]
add esp, 0xc
mov dword [ebp - 0xae], 0x6a
add eax, 0xfffffffe
lea ecx, [ecx]
mov cx, word [eax + 2]
add eax, 2
test cx, cx
jne 0x1001f8e0
mov ecx, dword [0x101637ec]
mov dx, word [0x101637f0]
mov dword [eax], ecx
mov word [eax + 4], dx
jmp 0x1001fcf3
sub eax, 0x439a
je 0x1001f922
sub eax, 0x57
jne 0x1001fcf3
mov dword [0x10188d78], eax
mov byte [ebp - 2], 1
jmp 0x1001fcf3
push 4
lea eax, [ebp - 0xa8]
push 0x101618ec
push eax
call fcn.100fdb50
add esp, 0xc
jmp 0x1001fcf3
xor ebx, ebx
jmp 0x1001fcf3
cmp eax, 0x454d
ja 0x1001fbae
je 0x1001fb9b
sub eax, 0x449f
je 0x1001fb0f
sub eax, 0x57
jne 0x1001fcf3
xor ecx, ecx
jmp 0x1001f970
mov eax, ecx
shr eax, 1
test cl, 1
je 0x1001f97b
xor eax, ebx
test al, 1
je 0x1001f985
shr eax, 1
xor eax, ebx
jmp 0x1001f987
shr eax, 1
test al, 1
je 0x1001f991
shr eax, 1
xor eax, ebx
jmp 0x1001f993
shr eax, 1
test al, 1
je 0x1001f99d
shr eax, 1
xor eax, ebx
jmp 0x1001f99f
shr eax, 1
test al, 1
je 0x1001f9a9
shr eax, 1
xor eax, ebx
jmp 0x1001f9ab
shr eax, 1
test al, 1
je 0x1001f9b5
shr eax, 1
xor eax, ebx
jmp 0x1001f9b7
shr eax, 1
test al, 1
je 0x1001f9c1
shr eax, 1
xor eax, ebx
jmp 0x1001f9c3
shr eax, 1
test al, 1
je 0x1001f9cd
shr eax, 1
xor eax, ebx
jmp 0x1001f9cf
shr eax, 1
mov dword [ecx*4 + 0x10177268], eax
inc ecx
cmp ecx, 0x100
jl 0x1001f970
lea ecx, [ebp - 0xcc]
push ecx
push 0x100
push 0
push 4
push 0
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_CreateFileMappingW]
mov dword [ebp - 0x44], eax
mov ecx, 0x10178668
mov eax, dword [ecx - 0x1400]
mov esi, eax
shl esi, 0x10
mov edi, eax
and edi, 0xff00
add esi, edi
shl esi, 8
mov edi, eax
shr edi, 0x18
add esi, edi
mov edx, eax
shr edx, 8
mov edi, edx
and edi, 0xff00
add esi, edi
mov dword [ecx - 0x400], esi
and eax, 0xff
mov eax, dword [eax*4 + 0x10177268]
xor eax, edx
mov esi, eax
shl esi, 0x10
mov edi, eax
and edi, 0xff00
add esi, edi
shl esi, 8
mov edi, eax
shr edi, 0x18
add esi, edi
mov edx, eax
shr edx, 8
mov edi, edx
and edi, 0xff00
add esi, edi
mov dword [ecx], esi
mov dword [ecx - 0x1000], eax
and eax, 0xff
mov eax, dword [eax*4 + 0x10177268]
xor eax, edx
mov esi, eax
shl esi, 0x10
mov edi, eax
and edi, 0xff00
add esi, edi
shl esi, 8
mov edi, eax
mov edx, eax
shr edx, 8
shr edi, 0x18
add esi, edi
mov edi, edx
mov dword [ecx - 0xc00], eax
and edi, 0xff00
add esi, edi
mov dword [ecx + 0x400], esi
and eax, 0xff
mov eax, dword [eax*4 + 0x10177268]
xor eax, edx
mov edx, eax
shl edx, 0x10
mov esi, eax
and esi, 0xff00
add edx, esi
mov esi, eax
shr esi, 8
shl edx, 8
and esi, 0xff00
mov dword [ecx - 0x800], eax
add edx, esi
shr eax, 0x18
add edx, eax
mov dword [ecx + 0x800], edx
add ecx, 4
cmp ecx, 0x10178a68
jl 0x1001fa01
cmp dword [ebp - 0x44], 0
sete byte [ebp - 9]
jmp 0x1001fcf3
xor ecx, ecx
xor eax, eax
mov edx, eax
mov esi, eax
mov edi, eax
mov dword [ebp - 0x104], ecx
mov dword [ebp - 0x100], edx
mov dword [ebp - 0xfc], esi
mov dword [ebp - 0xf8], edi
mov dword [ebp - 0xf4], eax
mov dword [ebp - 0xf0], ecx
mov dword [ebp - 0xec], edx
mov dword [ebp - 0xe8], esi
mov dword [ebp - 0xe4], edi
mov dword [ebp - 0xe0], eax
jmp 0x1001fb60
movzx edx, byte [eax + 0x10188d05]
movzx esi, byte [eax + 0x10188d04]
mov ecx, 0x1f
sub ecx, edx
mov edx, 1
shl edx, cl
mov ecx, 0x1f
sub ecx, esi
mov esi, 1
shl esi, cl
add eax, 2
or edx, esi
or ebx, edx
cmp eax, 0xe
jl 0x1001fb60
jmp 0x1001fcf3
cmp byte [ebp - 9], 0
je 0x1001fcf3
mov byte [ebp - 2], 0
jmp 0x1001fcf3
sub eax, 0x45a4
je 0x1001fbc8
sub eax, 0x57
jne 0x1001fcf3
mov dword [0x10171074], eax
jmp 0x1001fcf3
mov esi, 0x349
mov eax, esi
sub eax, 0x349
je 0x1001fc74
sub eax, 7
je 0x1001fc33
sub eax, 7
jne 0x1001fcbb
push 2
lea eax, [ebp - 0x4f]
push 0x1016250c
push eax
call fcn.100fdb50
push 3
lea ecx, [ebp - 0x4e]
push 0x10161e80
push ecx
call fcn.100fdb50
mov dx, word [0x10164438]
mov al, byte [0x1016443a]
push 2
lea ecx, [ebp - 0x4a]
push 0x1016443c
push ecx
mov word [ebp - 0x4c], dx
mov byte [ebp - 0x4a], al
call fcn.100fdb50
add esp, 0x24
jmp 0x1001fcbb
push 2
lea edx, [ebp - 0x53]
push 0x10161e5c
push edx
call fcn.100fdb50
push 3
lea eax, [ebp - 0x52]
push 0x10164440
push eax
call fcn.100fd2d0
lea edi, [ebp - 0x58]
add esp, 0x18
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x1001fc60
mov cx, word [0x101643a8]
mov word [edi], cx
jmp 0x1001fcbb
push 3
lea edx, [ebp - 0x58]
push 0x10164430
push edx
call fcn.100fdb50
push 2
lea eax, [ebp - 0x56]
push 0x101643c0
push eax
call fcn.100fdb50
lea eax, [ebp - 0x58]
add esp, 0x18
dec eax
jmp 0x1001fca0
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x1001fca0
mov cx, word [0x10164434]
mov dl, byte [0x10164436]
mov word [eax], cx
mov byte [eax + 2], dl
add esi, 7
cmp esi, 0x35e
jbe 0x1001fbcd
cmp byte [ebp - 2], 0
je 0x1001fcf3
mov esi, dword [ebp - 0x44]
lea eax, [ebp - 0xf0]
push eax
push 0
push 8
lea ecx, [ebp - 0x110]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_ReadFileScatter]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 8]
add eax, 0x57
mov dword [ebp - 8], eax
cmp eax, 0x45fb
jbe 0x1001f795
mov dword [ebp - 0x3c], ebx
jmp case.0x1001f573.9242
mov edx, dword [0x10171074]
test edx, edx
jne 0x1001fd10
jmp case.0x1001f573.9242
cmp ecx, 0x52e5
jne case.0x1001f573.9242
mov esi, dword [ebp - 0x28]
mov ebx, 0x6f65
cmp ebx, 0x7645
ja 0x10020026
je 0x1002001d
cmp ebx, 0x72d5
ja 0x1001ffb8
je 0x10020243
cmp ebx, 0x711d
ja 0x1001febd
je 0x1001fe6a
cmp ebx, 0x7015
ja 0x1001fdc5
je 0x1001fdb3
mov eax, ebx
sub eax, 0x6f65
je 0x1001fda5
sub eax, 0x58
jne 0x10020243
mov eax, 0x72
mov ecx, 0x63
mov word [ebp - 0x37], ax
mov edx, 0x3233
mov word [ebp - 0x36], cx
mov word [ebp - 0x35], dx
jmp 0x10020243
mov eax, 0x63
mov word [ebp - 0x38], ax
jmp 0x10020243
mov ecx, 0x682e
mov word [ebp - 0x33], cx
mov byte [ebp - 0x31], 0
jmp 0x10020243
mov eax, ebx
sub eax, 0x706d
je 0x1001fe28
sub eax, 0x58
jne 0x10020243
push 5
lea edx, [ebp - 0x9d]
push str.2.h
push edx
call fcn.100fd2d0
mov ax, word [0x101643b4]
mov cl, byte [0x101643b6]
push 4
lea edx, [ebp - 0x97]
push 0x101643b8
push edx
mov word [ebp - 0x99], ax
mov byte [ebp - 0x97], cl
call fcn.100fd2d0
add esp, 0x18
mov dword [ebp - 0x94], 0x656c62
jmp 0x10020243
lea edi, [ebp - 0xa4]
mov byte [ebp - 0xa4], 0
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x1001fe36
mov eax, dword [0x101643bc]
push 2
lea ecx, [ebp - 0xa1]
push 0x101643c0
push ecx
mov dword [edi], eax
call fcn.100fd2d0
add esp, 0xc
mov dword [ebp - 0xa0], 0x336372
jmp 0x10020243
push 2
lea edx, [ebp - 0x91]
push 0x10161e84
push edx
call fcn.100fdb50
mov eax, dword [str._for_r]
mov cx, word [0x101643e4]
mov dl, byte [0x101643e6]
push 3
mov dword [ebp - 0x90], eax
lea eax, [ebp - 0x8a]
push 0x101643e8
push eax
mov word [ebp - 0x8c], cx
mov byte [ebp - 0x8a], dl
call fcn.100fdb50
add esp, 0x18
jmp 0x10020243
cmp ebx, 0x7225
ja 0x10020243
je 0x1001ff54
mov eax, ebx
sub eax, 0x7175
je 0x1001ff26
sub eax, 0x58
jne 0x10020243
push 2
lea ecx, [ebp - 0x86]
push 0x1016439c
push ecx
call fcn.100fdb50
push 5
lea edx, [ebp - 0xa4]
push str.CRC_c
push edx
call fcn.100fda10
push 2
lea eax, [ebp - 0x7d]
push 0x101643a8
push eax
mov dword [ebp - 0x80], 0x636c61
call fcn.100fdb50
add esp, 0x24
jmp 0x10020243
push 1
lea ecx, [ebp - 0xa4]
push 0x10161898
push ecx
call fcn.100fda10
push 2
lea edx, [ebp - 0x87]
push 0x101643ec
push edx
call fcn.100fd2d0
add esp, 0x18
jmp 0x10020243
lea eax, [ebp - 0xa4]
dec eax
jmp 0x1001ff60
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x1001ff60
mov cx, word [0x10164394]
mov dl, byte [0x10164396]
mov word [eax], cx
push 3
mov byte [eax + 2], dl
lea eax, [ebp - 0xa4]
push 0x101613d4
push eax
call fcn.100fda10
lea edi, [ebp - 0xa4]
add esp, 0xc
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x1001ff98
mov cx, word [0x10164398]
mov edx, 0xa
mov word [edi], cx
mov word [ebp - 0x76], dx
jmp 0x10020243
cmp ebx, 0x748d
jbe 0x10020243
cmp ebx, 0x7595
ja 0x1001fff5
jne 0x10020243
mov eax, 0x6c
lea edi, [ebp - 0x74]
mov word [ebp - 0x74], ax
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x1001ffe0
mov ecx, dword [0x10164404]
mov dword [edi], ecx
jmp 0x10020243
cmp ebx, 0x75ed
jne 0x10020243
mov al, byte [0x1016440a]
mov dx, word [0x10164408]
mov byte [ebp - 0x6e], al
mov word [ebp - 0x70], dx
mov byte [ebp - 0x6e], 0x63
jmp 0x10020243
mov byte [ebp - 0x6d], 0
jmp 0x10020243
cmp ebx, 0x79b5
ja 0x100200f7
je 0x10020243
cmp ebx, 0x77fd
ja 0x10020243
je 0x10020243
cmp ebx, 0x774d
ja 0x10020243
je 0x100200c3
mov eax, ebx
sub eax, 0x769d
je 0x1002008b
sub eax, 0x58
jne 0x10020243
push 2
lea ecx, [ebp - 0x74]
push 0x101643d8
push ecx
call fcn.100fda10
mov edx, 0x46
add esp, 0xc
mov word [ebp - 0x60], dx
jmp 0x10020243
push 2
lea eax, [ebp - 0x6d]
push 0x10162520
push eax
call fcn.100fdb50
push 4
lea ecx, [ebp - 0x6c]
push 0x101643cc
push ecx
call fcn.100fdb50
push 8
lea edx, [ebp - 0x69]
push str._z_crc_
push edx
call fcn.100fdb50
add esp, 0x24
jmp 0x10020243
mov ax, word [0x101643dc]
mov cl, byte [0x101643de]
lea edi, [ebp - 0x74]
mov word [ebp - 0x5f], ax
mov byte [ebp - 0x5d], cl
dec edi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x100200e0
mov dx, word [0x1016439c]
mov word [edi], dx
jmp 0x10020243
cmp ebx, 0x7b6d
ja 0x10020193
je 0x10020243
cmp ebx, 0x7abd
ja 0x10020243
je 0x10020243
mov eax, ebx
sub eax, 0x7a0d
je 0x1002015b
sub eax, 0x58
jne 0x10020243
push 5
lea eax, [ebp - 0xd3]
push str.FOUR
push eax
call fcn.100fdb50
push 2
lea ecx, [ebp - 0xcf]
push 0x10162214
push ecx
call fcn.100fdb50
add esp, 0x18
jmp 0x10020243
push 5
lea edx, [ebp - 0xdc]
push str.ifd
push edx
call fcn.100fdb50
push 3
lea eax, [ebp - 0xd8]
push 0x101643fc
push eax
call fcn.100fdb50
add esp, 0x18
mov dword [ebp - 0xd6], 0x594220
jmp 0x10020243
cmp ebx, 0x7ccd
ja 0x10020232
je 0x100201df
mov eax, ebx
sub eax, 0x7bc5
je 0x100201c1
sub eax, 0x58
jne 0x10020243
cmp byte [ebp - 3], al
jne 0x1001f531
jmp 0x10020243
lea ecx, [ebp - 0x38]
push 0x101643f0
push ecx
call fcn.100fe4d9
mov esi, eax
add esp, 8
test esi, esi
mov dword [ebp - 0x28], esi
sete byte [ebp - 3]
jmp 0x10020243
mov ecx, 0x10177268
mov eax, esi
call fcn.10015090
mov edi, 0x10177668
mov esi, 0x2098
mov eax, esi
sub eax, 0x2098
je 0x10020214
sub eax, 0x44
je 0x10020214
sub eax, 0x88
jne 0x10020214
mov eax, dword [ebp - 0x28]
mov ecx, edi
call fcn.10015090
add esi, 0x44
cmp esi, 0x2164
jbe 0x100201f5
add edi, 0x400
cmp edi, 0x10179268
jl 0x100201f0
mov esi, dword [ebp - 0x28]
jmp 0x10020243
cmp ebx, 0x7d7d
jne 0x10020243
push esi
call fcn.100fe55d
add esp, 4
add ebx, 0x58
cmp ebx, 0x7d7d
jbe 0x1001fd33
mov eax, dword [ebp - 0x30]
add eax, 0x27
mov dword [ebp - 0x30], eax
cmp eax, dword [ebp - 0x2c]
jbe 0x1001f540
mov eax, dword [ebp - 0x2c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x48]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret