Function at 0x102486c
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x248
mov eax, dword [0x1030118]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
or dword [ebp - 0x220], 0xffffffff
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push dword [esi + 0x58]
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x22c], eax
xor ebx, ebx
lea eax, [edi + 0x5130]
push 0x104
push eax
mov dword [ebp - 0x228], ebx
mov dword [ebp - 0x234], ebx
mov dword [ebp - 0x224], 0xfffffffd
mov dword [ebp - 0x230], ebx
call fcn.01022b69
lea eax, [edi + 0x1340]
mov ecx, dword [eax]
push ecx
push dword [edi + 0x1394]
lea edx, [ecx + 1]
mov dword [eax], edx
lea eax, [edi + 0x5130]
push eax
call fcn.010242d1
test eax, eax
je 0x10246ae
push 9
pop eax
jmp 0x1024d66
push dword [esi + 0x58]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [esi + 0x58]
mov dword [esi + 0x20], eax
xor edx, edx
cmp byte [eax + ecx - 1], 0x2f
mov eax, 0xffff
sete dl
mov word [esi + 0x34], ax
push edi
lea eax, [ebp - 0x224]
push eax
lea eax, [ebp - 0x228]
push eax
mov dword [ebp - 0x238], edx
cmp dword [edi + 0xa0], ebx
je 0x1024748
push ebx
push 1
call fcn.01025c61
mov dword [ebp - 0x238], ebx
cmp dword [ebp - 0x224], 0xfffffffe
mov dword [esi + 8], eax
jne 0x1024726
cmp dword [ebp - 0x220], 0xffffffff
jne 0x1024726
mov dword [ebp - 0x238], 1
mov dword [ebp - 0x224], ebx
mov dword [ebp - 0x220], ebx
mov eax, dword [edi + 0x1350]
mov dword [edi + 0x60], ebx
cmp eax, ebx
je 0x1024787
push eax
push dword [esi + 0x48]
call fcn.01024402
test eax, eax
je 0x1024787
mov dword [ebp - 0x21c], ebx
jmp 0x1024793
push dword [esi + 0x48]
push 1
call fcn.01025c61
cmp eax, ebx
je 0x102476a
cmp dword [ebp - 0x220], 0xffffffff
jg 0x10246fb
jl 0x102476a
cmp dword [ebp - 0x224], 0xfffffffe
jae 0x10246fb
cmp dword [ebp - 0x224], 0xfffffffd
jne 0x1024780
cmp dword [ebp - 0x220], 0xffffffff
je 0x10246fb
push 0x12
jmp 0x10246a8
mov eax, dword [edi + 0x1348]
mov dword [ebp - 0x21c], eax
cmp dword [ebp - 0x238], ebx
je 0x10247b3
or dword [edi + 0x2c], 0xffffffff
mov dword [ebp - 0x21c], ebx
mov dword [ebp - 0x224], ebx
mov dword [ebp - 0x220], ebx
jmp 0x102480c
cmp dword [edi + 0xa0], ebx
je 0x10247c1
or dword [edi + 0x2c], 0xffffffff
jmp 0x102480c
push dword [esi + 0x48]
lea eax, [edi + 0x523c]
push 0x104
push eax
call fcn.01022b69
lea eax, [edi + 0x523c]
push eax
push 1
call fcn.01024dfc
push ebx
push 0x80
push 3
push ebx
push 3
push 0x80000000
lea eax, [edi + 0x523c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [edi + 0x2c], eax
cmp eax, 0xffffffff
je 0x1024780
cmp dword [edi + 0xa0], ebx
je 0x1024828
mov eax, dword [edi + 0xa8]
mov dword [edi + 0x38], eax
mov eax, dword [edi + 0xac]
mov dword [edi + 0x3c], eax
jmp 0x1024836
push dword [edi + 0x2c]
call fcn.010252a3
mov dword [edi + 0x38], eax
mov dword [edi + 0x3c], edx
mov eax, dword [ebp - 0x224]
mov edx, dword [ebp - 0x220]
mov ecx, eax
or ecx, edx
jne 0x102484e
mov dword [ebp - 0x21c], ebx
cmp dword [ebp - 0x21c], 0xffffffff
jne 0x1024861
mov dword [ebp - 0x21c], 8
push SetParent
pop ecx
mov word [esi], cx
mov word [esi + 2], cx
push 8
pop ecx
mov word [esi + 4], cx
mov ecx, dword [esi + 8]
shl ecx, 0x10
mov dword [esi + 0xc], ecx
mov dword [edi + 0x5234], ebx
mov dword [edi + 0x30], ebx
mov dword [edi + 0x34], ebx
mov cx, word [esi + 4]
mov word [esi + 0x36], cx
mov ecx, dword [ebp - 0x21c]
mov dword [esi + 0x30], ebx
mov word [esi + 6], cx
cmp ecx, ebx
jne 0x10248ae
cmp edx, ebx
jl 0x10248ae
jg 0x10248aa
cmp eax, ebx
jb 0x10248ae
mov ecx, edx
jmp 0x10248b2
xor eax, eax
xor ecx, ecx
cmp edx, ebx
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ecx
jl 0x10248d0
jg 0x10248c6
cmp dword [ebp - 0x224], ebx
jb 0x10248d0
mov eax, dword [ebp - 0x224]
mov ecx, edx
jmp 0x10248d4
xor eax, eax
xor ecx, ecx
mov dword [esi + 0x18], eax
mov eax, 0xffff
mov dword [esi + 0x1c], ecx
cmp word [esi + 0x34], ax
jne 0x10248f5
xor eax, eax
mov word [esi + 0x34], ax
mov dword [ebp - 0x230], 1
mov eax, dword [ebp - 0x228]
mov dword [esi + 0x38], eax
mov eax, dword [edi + 0x1380]
mov dword [esi + 0x40], eax
mov eax, dword [edi + 0x1384]
mov dword [esi + 0x44], eax
cmp dword [edi + 0xc4], ebx
je 0x1024a1f
push dword [esi + 0x58]
mov ebx, 0x104
push ebx
lea eax, [ebp - 0x218]
push eax
call fcn.01022b69
push dword [esi + 0x48]
lea eax, [ebp - 0x108]
push ebx
push eax
call fcn.01022b69
movzx eax, word [esi + 0xa]
push dword [edi + 0xc8]
mov dword [ebp - 0x114], eax
movzx eax, word [esi + 8]
mov dword [ebp - 0x110], eax
mov eax, dword [esi + 0x38]
mov dword [ebp - 0x10c], eax
mov dword [ebp - 0x244], eax
lea eax, [ebp - 0x218]
push eax
call dword [edi + 0xc4]
push dword [esi + 0x58]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
call ebx
inc eax
mov dword [ebp - 0x23c], eax
lea eax, [ebp - 0x218]
push eax
call ebx
push dword [esi + 0x58]
mov dword [ebp - 0x248], eax
call ebx
mov ecx, dword [ebp - 0x248]
cmp ecx, eax
jle 0x10249c9
push dword [esi + 0x58]
call fcn.0101be7e
pop ecx
lea eax, [ebp - 0x218]
push eax
call ebx
mov ebx, eax
inc ebx
inc ebx
push ebx
call fcn.0101be72
pop ecx
mov dword [esi + 0x58], eax
jmp 0x10249cf
mov ebx, dword [ebp - 0x23c]
mov eax, dword [esi + 0x58]
test eax, eax
je 0x10249f0
lea ecx, [ebp - 0x218]
push ecx
push ebx
push eax
call fcn.01022b69
push dword [esi + 0x58]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov dword [esi + 0x20], eax
movzx eax, word [ebp - 0x110]
mov ecx, dword [ebp - 0x114]
shl ecx, 0x10
add eax, ecx
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x244]
xor eax, dword [ebp - 0x10c]
and eax, 0x27
xor eax, dword [ebp - 0x244]
xor ebx, ebx
mov dword [esi + 0x38], eax
push edi
push dword [ebp - 0x22c]
push esi
call fcn.0102912b
cmp eax, ebx
jne 0x1024d66
mov eax, dword [esi + 0x60]
add eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x20]
lea eax, [eax + ecx + 0x1e]
add dword [edi + 0x1380], eax
mov eax, dword [ebp - 0x22c]
push 1
adc dword [edi + 0x1384], ebx
push ebx
push ebx
push dword [eax]
call fcn.01025228
push edi
push ebx
push ebx
mov dword [edi + 0x30], ebx
mov dword [edi + 0x34], ebx
call fcn.01024d7c
cmp dword [ebp - 0x21c], 9
mov dword [edi + 0x5238], eax
jne 0x1024ae7
mov eax, dword [ebp - 0x22c]
push edi
push dword [eax]
call fcn.0102b2d2
test eax, eax
jne 0x1024ae0
cmp dword [ebp - 0x230], ebx
je 0x1024a9e
mov eax, 0xffff
mov word [esi + 0x34], ax
push edi
lea eax, [ebp - 0x21c]
push eax
lea eax, [esi + 0x34]
push eax
call fcn.0102b33c
push edi
lea ebx, [esi + 4]
push ebx
push 5
call fcn.0102bf83
mov ax, word [esi + 0x36]
xor ax, word [ebx]
push edi
and ax, 6
xor word [esi + 0x36], ax
call fcn.0102bc98
push edi
mov ebx, eax
mov dword [ebp - 0x23c], edx
call fcn.01029566
jmp 0x1024b53
push 4
jmp 0x10246a8
cmp dword [ebp - 0x21c], 8
jne 0x1024b63
mov eax, dword [ebp - 0x22c]
push edi
push dword [eax]
call fcn.0102b2d2
test eax, eax
jne 0x1024ae0
cmp dword [ebp - 0x230], ebx
je 0x1024b13
mov eax, 0xffff
mov word [esi + 0x34], ax
push edi
lea eax, [ebp - 0x21c]
push eax
lea eax, [esi + 0x34]
push eax
call fcn.0102a2d3
push edi
lea ebx, [esi + 4]
push ebx
push 5
call fcn.01029b01
mov ax, word [esi + 0x36]
xor ax, word [ebx]
push edi
and ax, 6
xor word [esi + 0x36], ax
call fcn.0102991b
push edi
mov ebx, eax
mov dword [ebp - 0x23c], edx
call fcn.01029566
mov eax, dword [edi + 4]
mov ecx, dword [ebp - 0x22c]
mov dword [ecx], eax
jmp 0x1024c27
push 0x2000
call fcn.0101be72
pop ecx
mov dword [ebp - 0x230], eax
cmp eax, ebx
je 0x1024ae0
cmp dword [ebp - 0x238], ebx
jne 0x1024c0f
push ebx
push ebx
push dword [edi + 0x3c]
lea eax, [edi + 0x5130]
push dword [edi + 0x38]
push eax
call fcn.0102424a
jmp 0x1024bf9
push edi
push 0x2000
push dword [ebp - 0x230]
cmp dword [edi + 0xa0], ebx
je 0x1024bb9
call fcn.0102457b
jmp 0x1024bbe
call fcn.010244e5
xor ecx, ecx
cmp ecx, eax
mov dword [ebp - 0x234], eax
sbb eax, eax
neg eax
cmp eax, ebx
je 0x1024c01
push edi
push dword [ebp - 0x22c]
xor eax, eax
push eax
push dword [ebp - 0x234]
push dword [ebp - 0x230]
call fcn.010294f6
cmp eax, dword [ebp - 0x234]
jne 0x1024c3c
xor eax, eax
cmp edx, eax
jne 0x1024c3c
cmp dword [edi + 0x98], ebx
je 0x1024b9e
cmp dword [edi + 0x98], ebx
je 0x1024c0f
mov dword [edi], 9
push dword [ebp - 0x230]
call fcn.0101be7e
mov eax, dword [edi + 0x34]
mov ebx, dword [edi + 0x30]
pop ecx
mov dword [ebp - 0x23c], eax
cmp dword [edi], 0
je 0x1024c58
push dword [edi + 0x2c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [edi]
jmp 0x1024d66
push dword [ebp - 0x230]
call fcn.0101be7e
pop ecx
push dword [edi + 0x2c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0xa
jmp 0x10246a8
mov eax, dword [edi + 0x2c]
cmp eax, 0xffffffff
je 0x1024c7c
cmp dword [ebp - 0x234], 0xffffffff
jne 0x1024c70
push 0xb
jmp 0x10246a8
cmp eax, 0xffffffff
je 0x1024c7c
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
add dword [edi + 0x1380], ebx
mov ecx, dword [edi + 0x1380]
mov eax, dword [ebp - 0x23c]
adc dword [edi + 0x1384], eax
mov dword [ebp - 0x240], ecx
mov ecx, dword [edi + 0x1384]
mov dword [ebp - 0x23c], ecx
mov ecx, dword [edi + 0x5238]
mov dword [esi + 0x14], eax
mov dword [esi + 0xc], ecx
mov dword [esi + 0x10], ebx
mov eax, dword [edi + 0x30]
push 0
push dword [esi + 0x44]
mov dword [esi + 0x18], eax
mov eax, dword [edi + 0x34]
push dword [esi + 0x40]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp - 0x22c]
push dword [eax]
call fcn.01025228
and eax, edx
cmp eax, 0xffffffff
jne 0x1024ce7
push edi
push 0xb
call fcn.01026256
jmp 0x1024c69
mov ebx, dword [esi + 0xc]
mov eax, 0xfff7
and word [esi + 4], ax
mov ecx, eax
mov ax, word [ebp - 0x21c]
and word [esi + 0x36], cx
push SetParent
mov word [esi + 6], ax
pop eax
push edi
push dword [ebp - 0x22c]
mov word [esi + 2], ax
push esi
call fcn.0102912b
test eax, eax
je 0x1024d21
mov dword [esi + 0xc], ebx
jmp 0x1024d66
mov eax, dword [edi]
test eax, eax
jne 0x1024d66
push eax
push dword [ebp - 0x23c]
mov eax, dword [ebp - 0x22c]
push dword [ebp - 0x240]
mov dword [esi + 0xc], ebx
push dword [eax]
call fcn.01025228
and eax, edx
cmp eax, 0xffffffff
je 0x1024cdd
cmp dword [esi + 0x24], 0
je 0x1024d64
mov eax, dword [esi + 0x4c]
cmp eax, dword [esi + 0x50]
je 0x1024d60
push eax
call fcn.0101be7e
pop ecx
and dword [esi + 0x24], 0
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0101bc5d
leave
ret 0xc