Function at 0x1002e4ad
Capabilities:
Encode data using xor

Disassembly:
push 0x510
mov eax, 0x100444f9
call fcn.1003f47d
mov edi, ecx
mov dword [ebp - 0x4a8], edi
lea eax, [ebp - 0x4b8]
mov ecx, 0x1007a0f8
push eax
push edi
push dword [edi + 0x828]
call fcn.1003b3c8
cmp eax, 0xffffffff
jne 0x1002e500
cmp dword [ebp - 0x4b8], 0x2746
jne 0x1002e4f1
xor eax, eax
jmp 0x1002e500
cmp dword [ebp - 0x4b8], 0
je 0x1002e500
cmp byte [edi + 4], 0
je 0x1002e54c
cmp byte [edi + 4], 0
jne 0x1002e55b
test eax, eax
jg 0x1002e4c4
xor ecx, ecx
xorps xmm0, xmm0
mov dword [ebp - 0x490], ecx
lea ecx, [edi + 0x7f8]
movlpd qword [ebp - 0x4b4], xmm0
call fcn.1003331d
mov esi, eax
test esi, esi
je 0x1002e64f
mov edx, dword [ebp - 0x4b0]
mov eax, dword [ebp - 0x4b4]
mov dword [ebp - 0x494], edx
mov dword [ebp - 0x48c], eax
jmp 0x1002e569
mov eax, dword [edi]
mov ecx, edi
push 0
push 0
mov byte [edi + 4], 1
call dword [eax + 0x24]
xor al, al
call fcn.1003f43b
ret
mov eax, dword [ebp - 0x48c]
cmp dword [esi + 0x34], 0
jne 0x1002e5fd
or eax, edx
jne 0x1002e58a
call fcn.10026c4f
mov dword [ebp - 0x48c], eax
mov dword [ebp - 0x494], edx
jmp 0x1002e590
mov eax, dword [ebp - 0x48c]
push edx
push eax
movzx eax, byte [esi + 0x18]
mov ecx, edi
push 1
push eax
push dword [esi + 0x14]
movzx eax, byte [esi + 0xc]
push dword [esi + 0x10]
push eax
push dword [esi + 8]
push dword [esi + 4]
push dword [esi]
push dword [esi + 0x30]
call fcn.1002fa6d
test al, al
jne 0x1002e5c6
push 1
push dword [esi + 0x30]
call fcn.1003eff8
pop ecx
pop ecx
cmp dword [esi + 0x1c], 0
je 0x1002e613
push 0x1004b7c0
lea ecx, [esi + 0x10]
call fcn.100280af
test al, al
je 0x1002e613
push 1
push 1
push dword [esi + 0x14]
mov ecx, edi
push dword [esi + 0x10]
call fcn.1002d9c6
test eax, eax
je 0x1002e613
mov ecx, dword [esi + 0x1c]
mov dword [eax + 0x83c], ecx
jmp 0x1002e613
movzx eax, byte [esi + 0xc]
mov ecx, edi
push eax
push 1
push 0
push dword [esi + 0x14]
push dword [esi + 0x10]
call fcn.1002f860
mov eax, dword [edi + 0x800]
lea ecx, [edi + 0x7f8]
inc dword [edi + 0x808]
mov byte [eax + 0x38], 0
mov eax, dword [edi + 0x800]
mov eax, dword [eax + 0x3c]
mov dword [edi + 0x800], eax
call fcn.1003331d
mov edx, dword [ebp - 0x494]
mov esi, eax
test esi, esi
jne 0x1002e563
jmp 0x1002e667
mov eax, dword [ebp - 0x4b0]
mov dword [ebp - 0x494], eax
mov eax, dword [ebp - 0x4b4]
mov dword [ebp - 0x48c], eax
lea ecx, [edi + 0x3c8]
call fcn.10033337
mov ecx, eax
mov dword [ebp - 0x498], ecx
mov esi, ecx
test ecx, ecx
je 0x1002e834
mov eax, dword [ebp - 0x48c]
or eax, dword [ebp - 0x494]
jne 0x1002e6bd
call fcn.10026c4f
push 0
mov ecx, eax
mov eax, edx
push 0x3e8
push eax
push ecx
mov dword [ebp - 0x48c], ecx
mov dword [ebp - 0x494], eax
call fcn.1003f760
mov dword [ebp - 0x490], eax
jmp 0x1002e6c3
mov eax, dword [ebp - 0x490]
cmp dword [esi + 8], eax
jae 0x1002e80f
mov al, byte [esi + 0xc]
mov ecx, esi
push 0x1004b7c0
mov byte [ebp - 0x479], al
call fcn.10028092
mov cl, byte [ebp - 0x479]
mov byte [ebp - 0x474], al
cmp cl, 6
je 0x1002e778
test al, al
jne 0x1002e778
mov eax, dword [ebp - 0x490]
xor ecx, ecx
inc byte [esi + 0xc]
add eax, 0x3e8
mov dword [esi + 8], eax
mov byte [ebp - 0x488], 0x18
mov dword [ebp - 0x4a4], ecx
cmp dword [edi + 0x3c0], ecx
jbe 0x1002e753
mov eax, dword [edi + 0x3bc]
lea edx, [ebp - 0x488]
push dword [esi + 4]
push dword [esi]
mov ecx, dword [eax + ecx*4]
push 0x18
push edx
mov eax, dword [ecx]
call dword [eax + 0x1c]
mov ecx, dword [ebp - 0x4a4]
inc ecx
mov dword [ebp - 0x4a4], ecx
cmp ecx, dword [edi + 0x3c0]
jb 0x1002e722
movzx eax, word [esi + 4]
mov ecx, 0x1007a0f8
push eax
push dword [esi]
lea eax, [ebp - 0x488]
push 3
push eax
push dword [edi + 0x828]
call fcn.1003b51f
jmp 0x1002e80f
cmp dword [esi + 0x10], 0
je 0x1002e797
push dword [esi + 0x10]
call fcn.1003f75b
and dword [esi + 0x10], 0
mov al, byte [ebp - 0x474]
pop ecx
mov cl, byte [ebp - 0x479]
cmp cl, 6
jne 0x1002e7db
test al, al
jne 0x1002e7db
cmp dword [esi + 0x118], 1
jne 0x1002e7db
push 1
call fcn.1002fe29
pop ecx
push eax
mov ecx, dword [eax + 0x14]
mov byte [ecx], 0x1d
mov dword [eax + 0x10], 8
mov ecx, dword [esi]
mov dword [eax + 4], ecx
mov cx, word [esi + 4]
mov word [eax + 8], cx
mov ecx, 0xffff
mov word [eax], cx
mov ecx, edi
call fcn.10032f0d
cmp esi, dword [ebp - 0x498]
jne 0x1002e803
lea esi, [edi + 0x3c8]
mov ecx, esi
call fcn.10033357
mov ecx, esi
call fcn.10033337
mov ecx, eax
mov dword [ebp - 0x498], ecx
mov esi, ecx
jmp 0x1002e822
or dword [esi], 0xffffffff
mov eax, 0xffff
mov word [esi + 4], ax
lea ecx, [edi + 0x3c8]
call fcn.10033337
mov ecx, dword [ebp - 0x498]
mov esi, eax
test esi, esi
jne 0x1002e684
test ecx, ecx
je 0x1002e834
mov dword [edi + 0x3c8], ecx
xor ecx, ecx
xor eax, eax
cmp cx, word [edi + 8]
jmp 0x1002f60d
imul esi, eax, 0x840
add esi, dword [edi + 0x340]
mov dword [ebp - 0x4a4], esi
cmp byte [esi], 0
je 0x1002f600
mov eax, dword [esi + 4]
mov dword [ebp - 0x484], eax
mov ax, word [esi + 8]
mov word [ebp - 0x480], ax
mov eax, dword [ebp - 0x48c]
or eax, dword [ebp - 0x494]
jne 0x1002e8a9
call fcn.10026c4f
push 0
mov ecx, eax
mov eax, edx
push 0x3e8
push eax
push ecx
mov dword [ebp - 0x48c], ecx
mov dword [ebp - 0x494], eax
call fcn.1003f760
mov dword [ebp - 0x490], eax
jmp 0x1002e8af
mov eax, dword [ebp - 0x490]
mov ecx, dword [esi + 0x700]
cmp eax, ecx
jbe 0x1002e91e
sub eax, ecx
cmp eax, 0x1388
jbe 0x1002e91e
cmp dword [esi + 0x83c], 8
jne 0x1002e91e
lea ecx, [esi + 0x18]
call fcn.100349e4
xor ecx, ecx
cmp dword [eax + 0x60], ecx
jne 0x1002e91e
push dword [ebp - 0x494]
lea eax, [ebp - 0x474]
mov byte [ebp - 0x474], 0x17
push dword [ebp - 0x48c]
push ecx
push ecx
push dword [esi + 8]
push dword [esi + 4]
push ecx
push 8
push 3
push 8
push eax
mov ecx, edi
call fcn.1002fa6d
lea ecx, [esi + 0x18]
call fcn.10033af6
add eax, dword [ebp - 0x490]
mov dword [esi + 0x700], eax
lea eax, [edi + 0x3bc]
push eax
push dword [ebp - 0x494]
lea ecx, [esi + 0x18]
push dword [ebp - 0x48c]
push dword [edi + 0x81c]
push dword [ebp - 0x480]
push dword [ebp - 0x484]
push dword [edi + 0x828]
call fcn.1003435a
lea ecx, [esi + 0x18]
call fcn.1003498e
test al, al
jne 0x1002f57a
mov eax, dword [esi + 0x83c]
cmp eax, 1
je 0x1002e971
cmp eax, 2
jne 0x1002e981
lea ecx, [esi + 0x18]
call fcn.10034a75
test al, al
je 0x1002f57a
cmp dword [esi + 0x83c], 3
jne 0x1002e99a
lea ecx, [esi + 0x18]
call fcn.10034ac6
test al, al
je 0x1002f57a
mov eax, dword [esi + 0x83c]
cmp eax, 4
je 0x1002e9b4
cmp eax, 5
je 0x1002e9b4
cmp eax, 6
je 0x1002e9b4
cmp eax, 7
jne 0x1002e9d1
mov ecx, dword [esi + 0x818]
mov eax, dword [ebp - 0x490]
cmp eax, ecx
jbe 0x1002e9d1
sub eax, ecx
cmp eax, 0x2710
ja 0x1002f57a
lea ecx, [esi + 0x18]
call fcn.10034987
test al, al
je 0x1002ea1c
push 1
call fcn.1002fe29
pop ecx
push eax
mov ecx, dword [eax + 0x14]
mov dword [eax + 0x10], 8
mov byte [ecx], 0x26
mov ecx, dword [ebp - 0x484]
mov dword [eax + 4], ecx
mov cx, word [ebp - 0x480]
mov word [eax + 8], cx
mov ecx, dword [ebp - 0x488]
mov word [eax], cx
mov ecx, edi
call fcn.10032f0d
jmp 0x1002f600
cmp dword [esi + 0x83c], 8
jne 0x1002ea67
mov eax, dword [ebp - 0x490]
cmp eax, dword [esi + 0x6fc]
jbe 0x1002ea67
cmp byte [edi + 6], 0
jne 0x1002ea47
mov ecx, 0xffff
cmp word [esi + 0x6f8], cx
jne 0x1002ea67
add eax, 0x1388
mov ecx, edi
push 1
mov dword [esi + 0x6fc], eax
push dword [ebp - 0x480]
push dword [ebp - 0x484]
call fcn.1002f71e
lea eax, [ebp - 0x478]
lea ecx, [esi + 0x18]
push eax
call fcn.10034187
mov dword [ebp - 0x498], eax
test eax, eax
jle 0x1002f600
lea ecx, [esi + 0x18]
mov dword [ebp - 0x4b0], ecx
add eax, 7
sar eax, 3
cmp dword [edi + 0x7e0], 0
mov dword [ebp - 0x49c], eax
je 0x1002ebce
push 0x240
lea ecx, [ebp - 0x134]
call fcn.10021f67
and dword [ebp - 4], 0
lea ecx, [ebp - 0x134]
call fcn.10022027
push dword [ebp - 0x49c]
lea ecx, [ebp - 0x134]
push dword [ebp - 0x478]
call fcn.10022373
mov edx, dword [ebp - 0x134]
mov dword [ebp - 0x4a0], edx
lea ecx, [edx + 7]
sar ecx, 3
add dword [edi + 0x7ec], ecx
test edx, edx
je 0x1002ebb0
push ecx
call fcn.1003f006
mov ecx, dword [ebp - 0x134]
mov esi, eax
add ecx, 7
sar ecx, 3
push ecx
push dword [ebp - 0x128]
push esi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0x10
lea ecx, [ebp - 0x134]
call fcn.10022027
mov ecx, dword [edi + 0x7e0]
lea eax, [ebp - 0x134]
push eax
push dword [ebp - 0x4a0]
push esi
call fcn.10023daf
mov ecx, dword [ebp - 0x134]
push esi
lea ecx, [ecx + 7]
sar ecx, 3
add dword [edi + 0x7f4], ecx
call fcn.1003f75b
mov esi, dword [ebp - 0x134]
pop ecx
lea esi, [esi + 7]
sar esi, 3
mov dword [ebp - 0x4a0], esi
cmp esi, dword [ebp - 0x49c]
jle 0x1002eb92
push dword [ebp - 0x478]
call fcn.1003f75b
push esi
call fcn.1003f006
pop ecx
pop ecx
mov dword [ebp - 0x478], eax
jmp 0x1002eb98
mov eax, dword [ebp - 0x478]
push esi
push dword [ebp - 0x128]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov esi, dword [ebp - 0x4a4]
add esp, 0xc
jmp 0x1002ebb7
and dword [ebp - 0x4a0], 0
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x134]
call fcn.1002200d
mov eax, dword [ebp - 0x4a0]
jmp 0x1002ebd4
mov dword [ebp - 0x4a0], eax
cmp dword [esi + 0x83c], 6
mov ecx, dword [ebp - 0x478]
jne 0x1002ec58
cmp byte [ecx], 0xb
jne 0x1002ec03
push eax
push ecx
push dword [ebp - 0x480]
mov ecx, edi
push dword [ebp - 0x484]
push esi
call fcn.1002da82
jmp 0x1002f4f5
push 0
push 1
push 0
push dword [ebp - 0x480]
mov ecx, edi
push dword [ebp - 0x484]
call fcn.1002f860
mov eax, dword [edi]
lea ecx, [esi + 0x18]
mov edi, dword [eax + 0x64]
call fcn.10033af6
push dword [ebp - 0x480]
mov esi, eax
mov eax, dword [ebp - 0x4a8]
push dword [ebp - 0x484]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xb8]
mov ecx, eax
call edx
mov ecx, dword [ebp - 0x4a8]
push esi
push eax
call edi
jmp 0x1002f4f5
mov dl, byte [ecx]
cmp dl, 0xb
jne 0x1002ec8d
cmp dword [esi + 0x83c], 8
je 0x1002f2b0
push eax
push ecx
push dword [ebp - 0x480]
mov ecx, edi
push dword [ebp - 0x484]
push esi
call fcn.1002da82
mov ecx, dword [ebp - 0x478]
jmp 0x1002f2b0
cmp dl, 0x1e
jne 0x1002edaf
cmp eax, 7
jne 0x1002edaf
cmp dword [esi + 0x83c], 5
je 0x1002ecca
cmp dword [esi + 0x83c], eax
je 0x1002ecca
lea eax, [edi + 0x234]
push eax
lea ecx, [ebp - 0x484]
call fcn.10028092
test al, al
je 0x1002f4f5
push 1
mov dword [esi + 0x83c], 8
mov ecx, edi
push dword [ebp - 0x480]
push dword [ebp - 0x484]
call fcn.1002f71e
push 1
push dword [ebp - 0x480]
mov ecx, edi
push dword [ebp - 0x484]
call fcn.1002f63c
push 0
push 7
push dword [ebp - 0x478]
lea ecx, [ebp - 0x134]
call fcn.10021fa5
push 8
lea ecx, [ebp - 0x134]
mov dword [ebp - 4], 1
call fcn.10022235
push 1
push 0x20
lea eax, [ebp - 0x4d4]
push eax
lea ecx, [ebp - 0x134]
call fcn.100223fc
push 1
push 0x10
lea eax, [ebp - 0x4d0]
push eax
lea ecx, [ebp - 0x134]
call fcn.100223fc
mov eax, dword [ebp - 0x4d4]
mov dword [esi + 0xc], eax
mov ax, word [ebp - 0x4d0]
mov word [esi + 0x10], ax
push dword [ebp - 0x478]
push 7
call fcn.1002fe48
pop ecx
pop ecx
mov ecx, dword [ebp - 0x498]
mov dword [eax + 0x10], ecx
mov ecx, dword [ebp - 0x484]
mov dword [eax + 4], ecx
mov cx, word [ebp - 0x480]
mov word [eax + 8], cx
mov ecx, dword [ebp - 0x488]
mov word [eax], cx
mov ecx, edi
push eax
call fcn.10032f0d
lea ecx, [ebp - 0x134]
jmp 0x1002f08c
cmp dl, 9
jne 0x1002ef13
cmp eax, 9
jne 0x1002ef13
push 0
push eax
push ecx
lea ecx, [ebp - 0x134]
call fcn.10021fa5
push 8
lea ecx, [ebp - 0x134]
mov dword [ebp - 4], 2
call fcn.10022235
push 1
push 0x20
lea eax, [ebp - 0x4ac]
push eax
lea ecx, [ebp - 0x134]
call fcn.100223fc
push 1
push 0x20
lea eax, [ebp - 0x4c0]
push eax
lea ecx, [ebp - 0x134]
call fcn.100223fc
call fcn.10026c4f
push 0
mov ecx, eax
mov eax, edx
push 0x3e8
push eax
push ecx
mov dword [ebp - 0x48c], ecx
mov dword [ebp - 0x494], eax
call fcn.1003f760
mov dword [ebp - 0x490], eax
cmp eax, dword [ebp - 0x4ac]
jbe 0x1002ee4b
mov edx, eax
sub edx, dword [ebp - 0x4ac]
jmp 0x1002ee4d
xor edx, edx
mov ecx, dword [esi + 0x6f4]
movzx eax, word [esi + ecx*8 + 0x6cc]
test eax, eax
je 0x1002ee76
imul eax, eax, 3
cmp edx, eax
jae 0x1002ef02
cmp edx, 0x4b0
jae 0x1002ef02
movzx edi, dx
mov word [esi + ecx*8 + 0x6cc], di
mov eax, dword [ebp - 0x4ac]
add eax, dword [ebp - 0x490]
mov ecx, dword [ebp - 0x4c0]
shr eax, 1
sub ecx, eax
mov eax, dword [esi + 0x6f4]
mov dword [esi + eax*8 + 0x6d0], ecx
mov ecx, 0xffff
movzx eax, word [esi + 0x6f8]
cmp ax, cx
je 0x1002eeb9
cmp eax, edx
jle 0x1002eec0
mov word [esi + 0x6f8], di
cmp edx, 0x2710
jb 0x1002eee0
push 0x11e6
push str.D:GITHUBFormDX_ProjectFormDX_AntiCheatFormDX_AntiCheatSAMPRakNetRakPeer.cpp
push str.ping___10000
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__wassert]
add esp, 0xc
push edi
lea ecx, [esi + 0x18]
call fcn.1003499d
mov eax, dword [esi + 0x6f4]
inc eax
mov dword [esi + 0x6f4], eax
cmp eax, 5
jne 0x1002ef02
and dword [esi + 0x6f4], 0
push dword [ebp - 0x478]
call fcn.1003f75b
pop ecx
jmp 0x1002eda4
cmp dl, 6
jne 0x1002f017
cmp eax, 5
jne 0x1002f02b
push 0
push eax
push ecx
lea ecx, [ebp - 0x248]
call fcn.10021fa5
push 8
lea ecx, [ebp - 0x248]
mov dword [ebp - 4], 3
call fcn.10022235
push 1
push 0x20
lea eax, [ebp - 0x4c4]
push eax
lea ecx, [ebp - 0x248]
call fcn.100223fc
lea ecx, [ebp - 0x134]
call fcn.10021f4c
push 1
push 8
lea eax, [ebp - 0x474]
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp - 0x134]
mov byte [ebp - 0x474], 9
call fcn.10022288
call fcn.10026bfe
mov esi, eax
lea ecx, [ebp - 0x134]
mov eax, dword [ebp - 0x4c4]
push 1
mov dword [ebp - 0x49c], eax
lea eax, [ebp - 0x49c]
push 0x20
push eax
mov dword [ebp - 0x490], esi
call fcn.10022288
push 1
push 0x20
lea eax, [ebp - 0x49c]
mov dword [ebp - 0x49c], esi
push eax
lea ecx, [ebp - 0x134]
call fcn.10022288
xor eax, eax
mov ecx, edi
push eax
push esi
push eax
push eax
push dword [ebp - 0x480]
push dword [ebp - 0x484]
push eax
push 6
push eax
push dword [ebp - 0x134]
push dword [ebp - 0x128]
call fcn.1002fa6d
push dword [ebp - 0x478]
call fcn.1003f75b
pop ecx
lea ecx, [ebp - 0x134]
call fcn.1002200d
jmp 0x1002f086
cmp dl, 0x20
jne 0x1002f02b
mov dword [esi + 0x83c], 3
jmp 0x1002f4f5
cmp dl, 0x11
jne 0x1002f09a
push 0
push eax
push ecx
lea ecx, [ebp - 0x248]
call fcn.10021fa5
push 8
lea ecx, [ebp - 0x248]
mov dword [ebp - 4], 5
call fcn.10022235
push 1
push 8
lea eax, [ebp - 0x4c8]
push eax
lea ecx, [ebp - 0x248]
call fcn.10022670
push dword [ebp - 0x4c8]
lea ecx, [esi + 0x830]
call fcn.10039666
push dword [ebp - 0x478]
call fcn.1003f75b
pop ecx
lea ecx, [ebp - 0x248]
or dword [ebp - 4], 0xffffffff
call fcn.1002200d
jmp 0x1002f549
cmp dl, 0xa
jne 0x1002f0b9
push 1
push dword [ebp - 0x480]
mov ecx, edi
push dword [ebp - 0x484]
call fcn.1002f63c
jmp 0x1002f4f5
cmp dl, 0x29
jne 0x1002f0f5
lea ecx, [esi + 0x704]
call fcn.10022027
mov eax, dword [ebp - 0x4a0]
lea ecx, [esi + 0x704]
dec eax
push eax
mov eax, dword [ebp - 0x478]
inc eax
push eax
call fcn.1002202f
push dword [ebp - 0x478]
push dword [ebp - 0x4a0]
jmp 0x1002f514
cmp dl, 0xf
jne 0x1002f111
cmp eax, 0x39
jne 0x1002f503
push ecx
push esi
mov ecx, edi
call fcn.1002e2e6
jmp 0x1002f4f5
cmp dl, 0x10
jne 0x1002f2a2
cmp eax, 0x35
jne 0x1002f503
lea ecx, [ebp - 0xd4]
call fcn.100396fe
lea ecx, [ebp - 0xd4]
mov dword [ebp - 4], 6
call fcn.1003971b
push 4
lea eax, [ebp - 0x484]
push eax
lea ecx, [ebp - 0xd4]
call fcn.10039747
push 2
lea eax, [ebp - 0x480]
push eax
lea ecx, [ebp - 0xd4]
call fcn.10039747
push 0x14
lea eax, [edi + 0x9ac]
push eax
lea ecx, [ebp - 0xd4]
call fcn.10039747
lea ecx, [ebp - 0xd4]
call fcn.100398d5
mov esi, dword [ebp - 0x478]
lea ecx, [ebp - 0xd4]
call fcn.10039b1a
xor edx, edx
mov ecx, dword [eax + edx*4]
cmp ecx, dword [esi + edx*4 + 1]
jne 0x1002f1ab
inc edx
cmp edx, 5
jne 0x1002f19a
jmp 0x1002f21f
lea ecx, [ebp - 0xd4]
call fcn.1003971b
push 4
lea eax, [ebp - 0x484]
push eax
lea ecx, [ebp - 0xd4]
call fcn.10039747
push 2
lea eax, [ebp - 0x480]
push eax
lea ecx, [ebp - 0xd4]
call fcn.10039747
push 0x14
lea eax, [edi + 0x9c0]
push eax
lea ecx, [ebp - 0xd4]
call fcn.10039747
lea ecx, [ebp - 0xd4]
call fcn.100398d5
mov esi, dword [ebp - 0x478]
lea ecx, [ebp - 0xd4]
call fcn.10039b1a
xor edx, edx
mov ecx, dword [eax + edx*4]
cmp ecx, dword [esi + edx*4 + 1]
jne 0x1002f282
inc edx
cmp edx, 5
jne 0x1002f210
mov esi, dword [ebp - 0x478]
lea edi, [ebp - 0x4fc]
push 8
pop ecx
add esi, 0x15
lea eax, [ebp - 0x51c]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x4a8]
push eax
lea eax, [ebp - 0x4fc]
push eax
lea ecx, [edi + 0x84c]
call fcn.1003355c
mov edx, dword [ebp - 0x478]
xor ecx, ecx
mov al, byte [ebp + ecx - 0x51c]
xor al, byte [ecx + edx + 1]
mov byte [ebp + ecx - 0x20], al
inc ecx
cmp ecx, 0x10
jl 0x1002f25a
push 1
lea eax, [ebp - 0x20]
mov ecx, edi
push eax
push dword [ebp - 0x4a4]
call fcn.1002db28
push dword [ebp - 0x478]
call fcn.1003f75b
or dword [ebp - 4], 0xffffffff
pop ecx
lea ecx, [ebp - 0xd4]
call fcn.10039710
jmp 0x1002f549
cmp dl, 0x17
jne 0x1002f2b6
cmp eax, 1
jne 0x1002f503
push ecx
jmp 0x1002f4fb
cmp dl, 0x22
jne 0x1002f503
cmp eax, 0xd
jne 0x1002f503
mov eax, dword [esi + 0x83c]
cmp eax, 5
je 0x1002f2e5
cmp eax, 4
je 0x1002f2e5
cmp byte [edi + 0x9d4], 0
jne 0x1002f2e5
xor dl, dl
jmp 0x1002f2f2
mov dl, 1
mov byte [ebp - 0x479], dl
cmp eax, 5
je 0x1002f2f9
mov byte [ebp - 0x479], 0
push 0
test dl, dl
je 0x1002f4e0
push 0xd
push ecx
lea ecx, [ebp - 0x470]
call fcn.10021fa5
push 8
lea ecx, [ebp - 0x470]
mov dword [ebp - 4], 7
call fcn.10022235
push 1
push 0x20
lea eax, [ebp - 0x4dc]
push eax
lea ecx, [ebp - 0x470]
call fcn.100223fc
push 1
push 0x10
lea eax, [ebp - 0x4d8]
push eax
lea ecx, [ebp - 0x470]
call fcn.100223fc
push 1
push 0x10
lea eax, [ebp - 0x4bc]
push eax
lea ecx, [ebp - 0x470]
call fcn.100223fc
cmp byte [ebp - 0x479], 0
mov eax, dword [ebp - 0x4dc]
mov dword [esi + 0xc], eax
mov ax, word [ebp - 0x4d8]
mov word [esi + 0x10], ax
mov dword [esi + 0x83c], 8
jne 0x1002f3aa
cmp byte [esi + 0x82c], 0
lea ecx, [esi + 0x18]
je 0x1002f3a3
lea eax, [esi + 0x81c]
push eax
jmp 0x1002f3a5
push 0
call fcn.10033ac9
push dword [ebp - 0x478]
push 0xd
call fcn.1002fe48
mov esi, eax
pop ecx
pop ecx
push 1
mov dword [esi + 0x10], 0x68
mov ecx, dword [ebp - 0x484]
mov dword [esi + 4], ecx
mov cx, word [ebp - 0x480]
mov word [esi + 8], cx
mov ecx, edi
push dword [ebp - 0x480]
push dword [ebp - 0x484]
call fcn.1002d845
push esi
mov ecx, edi
mov word [esi], ax
call fcn.10032f0d
push 7
lea ecx, [ebp - 0x35c]
call fcn.10021f67
push 1
push 8
lea eax, [ebp - 0x474]
mov byte [ebp - 4], 8
push eax
lea ecx, [ebp - 0x35c]
mov byte [ebp - 0x474], 0x1e
call fcn.10022288
mov eax, dword [ebp - 0x484]
lea ecx, [ebp - 0x35c]
push 1
mov dword [ebp - 0x49c], eax
lea eax, [ebp - 0x49c]
push 0x20
push eax
call fcn.10022288
movzx eax, word [ebp - 0x480]
lea ecx, [ebp - 0x35c]
push 1
mov dword [ebp - 0x4cc], eax
lea eax, [ebp - 0x4cc]
push 0x10
push eax
call fcn.10022288
call fcn.10026bfe
xor ecx, ecx
push ecx
push eax
push ecx
push ecx
push dword [ebp - 0x480]
push dword [ebp - 0x484]
push ecx
push 8
push ecx
push dword [ebp - 0x35c]
mov ecx, edi
push dword [ebp - 0x350]
call fcn.1002fa6d
cmp byte [ebp - 0x479], 0
jne 0x1002f4ca
push 1
push dword [ebp - 0x480]
mov ecx, edi
push dword [ebp - 0x484]
call fcn.1002f71e
push 1
push dword [ebp - 0x480]
mov ecx, edi
push dword [ebp - 0x484]
call fcn.1002f63c
lea ecx, [ebp - 0x35c]
call fcn.1002200d
lea ecx, [ebp - 0x470]
jmp 0x1002f08c
push 1
push dword [ebp - 0x480]
mov ecx, edi
push dword [ebp - 0x484]
call fcn.1002dc42
push dword [ebp - 0x478]
call fcn.1003f75b
pop ecx
jmp 0x1002f549
cmp eax, 2
jbe 0x1002f50d
cmp dl, 0xc
je 0x1002f512
cmp dl, 0x14
jb 0x1002f549
push ecx
push eax
call fcn.1002fe48
pop ecx
pop ecx
mov ecx, dword [ebp - 0x498]
mov dword [eax + 0x10], ecx
mov ecx, dword [ebp - 0x484]
mov dword [eax + 4], ecx
mov cx, word [ebp - 0x480]
mov word [eax + 8], cx
mov ecx, dword [ebp - 0x488]
mov word [eax], cx
mov ecx, edi
push eax
call fcn.10032f0d
mov ecx, dword [ebp - 0x4b0]
lea eax, [ebp - 0x478]
push eax
call fcn.10034187
mov edi, dword [ebp - 0x4a8]
mov esi, dword [ebp - 0x4a4]
mov dword [ebp - 0x498], eax
test eax, eax
jg 0x1002ea8d
jmp 0x1002f600
mov eax, dword [esi + 0x83c]
cmp eax, 8
je 0x1002f594
cmp eax, 4
je 0x1002f594
cmp eax, 1
je 0x1002f594
cmp eax, 3
jne 0x1002f5e7
push 1
call fcn.1002fe29
pop ecx
mov ecx, eax
mov eax, dword [esi + 0x83c]
mov edx, dword [ecx + 0x14]
cmp eax, 4
jne 0x1002f5b1
mov byte [edx], 0x1d
jmp 0x1002f5bb
cmp eax, 8
sete al
add al, 0x20
mov byte [edx], al
mov dword [ecx + 0x10], 8
mov eax, dword [ebp - 0x484]
mov dword [ecx + 4], eax
mov ax, word [ebp - 0x480]
mov word [ecx + 8], ax
mov eax, dword [ebp - 0x488]
mov word [ecx], ax
push ecx
mov ecx, edi
call fcn.10032f0d
push 0
push 1
push 0
push dword [ebp - 0x480]
mov ecx, edi
push dword [ebp - 0x484]
call fcn.1002f860
mov eax, dword [ebp - 0x488]
movzx ecx, word [edi + 8]
inc eax
cmp eax, ecx
mov dword [ebp - 0x488], eax
jb 0x1002e841
mov al, 1
jmp 0x1002e55d