Function at 0x402ec9
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push 0x74
mov eax, 0x499d85
call fcn.0046c7ed
mov eax, dword [ebp - 0x80]
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x80], 0x4caec0
mov dword [ebp - 0x18], 0x100bfab
call fcn.00402e18
lea ecx, [ebp - 0x3c]
mov dword [0x4caec0], eax
mov dword [ebp - 0x3c], 0xb9bea2ad
mov dword [ebp - 0x38], 0x100a2b6
call fcn.00402e39
push eax
mov ecx, 0x4caec4
call fcn.0041437c
and dword [ebp - 4], 0
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x18], 0x100b5bd
call fcn.00402e18
mov dword [0x4caedc], eax
lea edi, [ebp - 0x30]
xor eax, eax
mov dword [ebp - 0x34], 0x73726d65
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosb byte es:[edi], al
mov al, byte [ebp - 0x6e]
mov dword [ebp - 0x74], eax
mov eax, dword [0x4cad2c]
mov edi, dword [0x4cad28]
mov dword [ebp - 0x18], eax
xor edx, edx
mov dword [ebp - 0x78], edx
cmp edx, 0x19
jae 0x403943
mov dh, byte [ebp + edx - 0x34]
movzx ecx, dh
mov dl, dh
mov byte [ebp - 0x6d], dh
mov dword [ebp - 0x7c], ecx
mov byte [ebp - 0x6e], dl
mov esi, dword [ebp - 0x78]
cmp edi, esi
ja 0x40393b
add eax, 2
cmp edi, eax
jae 0x402fa6
lea eax, [esi - 0x1e9641fe]
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x74], eax
and eax, ecx
add eax, eax
sub dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x74]
add eax, ecx
sub al, 0xe
mov dword [ebp - 0x74], eax
jmp 0x402fe0
mov esi, dword [ebp - 0x18]
lea ecx, [esi + 1]
cmp edi, ecx
je 0x4038c8
lea eax, [esi + 3]
cmp edi, eax
je 0x40385d
lea eax, [ecx + 1]
cmp edi, eax
je 0x403831
lea eax, [esi + 5]
cmp edi, eax
je 0x4037f7
lea eax, [esi + 9]
cmp edi, eax
je 0x4037bb
mov ch, dh
mov byte [ebp - 0x6e], ch
mov edx, dword [ebp - 0x78]
cmp esi, edx
ja 0x403933
lea eax, [esi + 0xa]
cmp edi, eax
jae 0x403010
mov al, byte [ebp - 0x7c]
add edx, 0x65734a9a
and al, dl
mov cl, ch
add al, al
sub cl, al
sub dl, 0x36
jmp 0x4031dd
lea eax, [esi + 1]
cmp edi, eax
je 0x4037a1
lea eax, [esi + 3]
cmp edi, eax
je 0x403789
lea eax, [esi + 5]
cmp edi, eax
je 0x40376a
lea eax, [esi + 4]
cmp edi, eax
je 0x40374b
lea eax, [esi + 2]
cmp edi, eax
je 0x40372e
lea eax, [esi + edi]
cmp eax, edx
jbe 0x403535
lea eax, [esi + 0x7a]
cmp edi, eax
je 0x40351a
lea eax, [esi + 0x42]
cmp edi, eax
je 0x4034fc
lea eax, [esi + 6]
cmp edi, eax
je 0x4034db
lea eax, [esi + 2]
cmp edi, eax
je 0x4034bb
lea eax, [esi + 0x400]
cmp edi, eax
je 0x4034a0
lea eax, [esi + 0x20]
cmp edi, eax
je 0x40347f
lea eax, [esi + 3]
cmp edi, eax
je 0x40345d
lea eax, [esi + 0x5a]
cmp edi, eax
je 0x403439
lea eax, [esi + 0x80]
cmp edi, eax
je 0x403422
lea eax, [esi + 9]
cmp edi, eax
je 0x403052
lea edi, [esi + 4]
lea esi, [edi + 0x2a]
lea eax, [esi + 0x2a]
mov dword [ebp - 0x18], esi
cmp edi, eax
jb 0x403918
lea eax, [esi + 0x200]
cmp edi, eax
jb 0x4038fa
lea eax, [esi + 0xa]
cmp edi, eax
jb 0x403208
lea eax, [esi + 1]
cmp edi, eax
jb 0x4031ea
lea eax, [esi + 0x7a]
cmp edi, eax
jb 0x4031c9
lea eax, [esi + 0x42]
cmp edi, eax
jb 0x4033d2
lea eax, [esi + 6]
cmp edi, eax
jb 0x403383
lea eax, [esi + 0x41]
cmp edi, eax
jb 0x403364
lea eax, [esi + 0x400]
cmp edi, eax
jb 0x403341
lea eax, [esi + 0x20]
cmp edi, eax
jb 0x403052
lea edi, [esi + 8]
lea esi, [edi + 3]
lea eax, [esi + 0x5a]
mov dword [ebp - 0x18], esi
cmp edi, eax
ja 0x403325
lea eax, [esi + 0x1000]
cmp edi, eax
ja 0x403306
lea eax, [esi + 0x28]
cmp edi, eax
ja 0x4032e7
lea eax, [esi + 4]
cmp edi, eax
ja 0x4032ce
lea eax, [esi + 0x61]
cmp edi, eax
ja 0x4032b0
lea eax, [esi + 0x200]
cmp edi, eax
ja 0x403291
lea eax, [esi + 0xa]
cmp edi, eax
ja 0x403275
lea eax, [esi + 1]
cmp edi, eax
ja 0x403256
lea eax, [esi + 0x3e8]
cmp edi, eax
ja 0x40322f
lea eax, [esi + 0x42]
cmp edi, eax
ja 0x403052
lea edi, [esi + 0x10]
lea esi, [edi + 6]
mov dword [ebp - 0x18], esi
jmp 0x403052
mov al, byte [ebp - 0x7c]
add edx, 0x3d453b4e
and al, dl
mov cl, ch
add al, al
sub cl, al
sub dl, 0x22
add cl, dl
mov edx, dword [ebp - 0x78]
mov byte [ebp - 0x74], cl
jmp 0x403047
mov al, byte [ebp - 0x7c]
add edx, 0xfcdde072
and al, dl
mov cl, ch
add al, al
sub cl, al
sub cl, 0x1e
add cl, dl
mov byte [ebp - 0x74], cl
jmp 0x402fe5
mov al, byte [ebp - 0x7c]
add edx, 0xbc768596
mov dh, byte [ebp - 0x6d]
and al, dl
add al, al
mov cl, ch
sub cl, al
mov eax, dword [ebp - 0x18]
sub cl, 0x1a
add cl, dl
mov byte [ebp - 0x74], cl
mov ecx, dword [ebp - 0x7c]
jmp 0x402f75
mov eax, dword [ebp - 0x7c]
lea ecx, [edx - 0x1ce01f3c]
mov dh, byte [ebp - 0x6e]
and al, cl
add al, al
mov dword [ebp - 0x7c], eax
mov al, dh
sub al, byte [ebp - 0x7c]
mov ah, byte [ebp - 0x78]
sub al, 0x5c
add al, cl
mov byte [ebp - 0x74], al
jmp 0x4037d5
mov ecx, dword [ebp - 0x7c]
lea eax, [edx - 0x5d477a18]
mov dh, byte [ebp - 0x6e]
and cl, al
add cl, cl
sub dh, cl
sub dh, 0x58
add dh, al
mov byte [ebp - 0x74], dh
jmp 0x403616
lea eax, [edx + 0x62512b0c]
mov edx, dword [ebp - 0x7c]
and dl, al
add dl, dl
sub ch, dl
sub ch, 0x54
add ch, al
mov byte [ebp - 0x74], ch
jmp 0x4034f4
mov eax, dword [ebp - 0x7c]
lea ecx, [edx + 0x21e9d030]
mov dh, byte [ebp - 0x6e]
and al, cl
add al, al
mov dword [ebp - 0x7c], eax
mov al, dh
sub al, byte [ebp - 0x7c]
sub al, 0x50
jmp 0x4034d1
lea eax, [edx - 0x1e7d8aac]
mov edx, dword [ebp - 0x7c]
and dl, al
sub al, 0x4c
add dl, dl
sub ch, dl
add ch, al
mov byte [ebp - 0x74], ch
mov eax, dword [ebp - 0x74]
jmp 0x403849
lea eax, [edx - 0x5ee4e588]
mov edx, dword [ebp - 0x7c]
and dl, al
add dl, dl
sub ch, dl
sub ch, 0x48
add al, ch
jmp 0x403495
mov eax, dword [ebp - 0x7c]
lea ecx, [edx + 0x60b3bf9c]
mov dh, byte [ebp - 0x6e]
and al, cl
add al, al
mov dword [ebp - 0x7c], eax
mov al, dh
sub al, byte [ebp - 0x7c]
sub al, 0x44
jmp 0x403475
mov eax, dword [ebp - 0x7c]
lea ecx, [edx + 0x204c64c0]
mov dh, byte [ebp - 0x6e]
and al, cl
add al, al
mov dword [ebp - 0x7c], eax
mov al, dh
sub al, byte [ebp - 0x7c]
sub al, 0x40
jmp 0x403453
lea eax, [edx - 0x201af61c]
mov edx, dword [ebp - 0x7c]
and dl, al
add dl, dl
sub ch, dl
sub ch, 0x3c
add ch, al
mov byte [ebp - 0x74], ch
jmp 0x4038e5
lea eax, [edx + 0x3ee2a6be]
mov edx, dword [ebp - 0x7c]
and dl, al
add dl, dl
sub ch, dl
sub ch, 0x32
add al, ch
mov dword [ebp - 0x74], eax
mov edx, dword [ebp - 0x78]
mov byte [ebp + edx - 0x34], al
jmp 0x4038f1
lea eax, [edx - 0x184b41e]
mov edx, dword [ebp - 0x7c]
and dl, al
add dl, dl
sub ch, dl
sub ch, 0x2e
add al, ch
mov ch, byte [ebp - 0x6d]
mov dword [ebp - 0x74], eax
jmp 0x4036df
lea eax, [edx - 0x41ec0efa]
mov edx, dword [ebp - 0x7c]
and dl, al
add dl, dl
sub ch, dl
sub ch, 0x2a
add ch, al
mov byte [ebp - 0x74], ch
mov ch, byte [ebp - 0x6d]
cmp edi, 0x7a
jae 0x403707
lea eax, [esi + 0x3e8]
cmp edi, eax
jbe 0x403677
mov dl, byte [ebp - 0x78]
mov al, ch
sub dl, 0x30
mov cl, 0x28
and al, dl
sub cl, al
add cl, cl
add cl, ch
add cl, dl
mov al, cl
mov dword [ebp - 0x74], eax
jmp 0x4036df
lea eax, [edx + 0x7dac962a]
mov edx, dword [ebp - 0x7c]
and dl, al
add dl, dl
sub ch, dl
mov edx, dword [ebp - 0x78]
sub ch, 0x26
add ch, al
mov byte [ebp - 0x74], ch
mov ch, byte [ebp - 0x6d]
lea eax, [esi + edi]
cmp eax, 0x41
je 0x40371c
lea eax, [esi + 0x400]
cmp edi, eax
jbe 0x4035ea
sub dl, 0x36
mov al, ch
and al, dl
mov cl, 0x3d
sub cl, al
add cl, cl
add cl, ch
add cl, dl
mov byte [ebp - 0x74], cl
jmp 0x40339d
lea eax, [edx - 0x655a9348]
mov edx, dword [ebp - 0x7c]
and dl, al
add dl, dl
sub ch, dl
sub ch, 8
jmp 0x403337
mov eax, dword [ebp - 0x7c]
lea ecx, [edx + 0x5a3e11dc]
mov dh, byte [ebp - 0x6e]
and al, cl
add al, al
mov dword [ebp - 0x7c], eax
mov al, dh
sub al, byte [ebp - 0x7c]
sub al, 4
add al, cl
mov byte [ebp - 0x74], al
jmp 0x4038a3
mov eax, dword [ebp - 0x7c]
lea ecx, [edx + 0x19d6b700]
mov dh, byte [ebp - 0x6e]
and al, cl
add al, al
mov dword [ebp - 0x7c], eax
mov al, dh
sub al, byte [ebp - 0x7c]
add al, cl
mov byte [ebp - 0x74], al
jmp 0x40387a
lea ecx, [edx - 0x2690a3dc]
mov al, 2
mov edx, dword [ebp - 0x7c]
and dl, cl
sub al, dl
add al, al
add al, byte [ebp - 0x6e]
add al, cl
mov edx, dword [ebp - 0x78]
mov dword [ebp - 0x74], eax
jmp 0x40384e
lea ecx, [edx - 0x66f7feb8]
mov al, 4
mov edx, dword [ebp - 0x7c]
and dl, cl
sub al, dl
add al, al
add al, byte [ebp - 0x6e]
add al, cl
jmp 0x403846
lea ecx, [edx + 0x58a0a66c]
mov al, 6
mov edx, dword [ebp - 0x7c]
mov dh, byte [ebp - 0x6e]
and dl, cl
sub al, dl
add al, al
add al, dh
add al, cl
mov byte [ebp - 0x74], al
jmp 0x40380f
lea ecx, [edx + 0x18394b90]
mov al, 8
mov edx, dword [ebp - 0x7c]
and dl, cl
sub al, dl
add al, al
add al, byte [ebp - 0x6e]
add al, cl
mov byte [ebp - 0x74], al
mov edx, dword [ebp - 0x78]
jmp 0x4037f1
lea ecx, [edx - 0x282e0f4c]
mov al, 0xa
mov edx, dword [ebp - 0x7c]
and dl, cl
sub al, dl
add al, al
add al, byte [ebp - 0x6e]
add al, cl
mov byte [ebp - 0x74], al
jmp 0x403616
mov ch, byte [ebp - 0x6d]
mov ah, dl
sub dl, 0x28
mov cl, 0xc
mov al, ch
and al, dl
sub cl, al
add cl, cl
add cl, ch
mov dh, ch
jmp 0x4037d0
lea eax, [esi + 0x28]
cmp edi, eax
jae 0x40355c
mov ch, byte [ebp - 0x6d]
add dl, 0x6e
mov al, ch
mov cl, ch
and al, dl
sub dl, 2
add al, al
sub cl, al
add cl, dl
mov edx, dword [ebp - 0x78]
mov byte [ebp - 0x74], cl
jmp 0x4033ef
lea eax, [esi + 1]
cmp edi, eax
jne 0x403580
mov ch, byte [ebp - 0x6d]
mov cl, dl
mov al, ch
sub cl, 0x60
and al, cl
add al, al
sub ch, al
sub ch, 0x60
add ch, cl
mov byte [ebp - 0x74], ch
jmp 0x4038e8
inc eax
cmp edi, eax
jne 0x4035a1
mov ch, byte [ebp - 0x6d]
add dl, 0x58
mov al, ch
mov cl, ch
and al, dl
add al, al
sub cl, al
sub cl, 0x68
add cl, dl
mov dh, ch
jmp 0x403877
lea eax, [esi + 7]
cmp edi, eax
jne 0x4035c5
mov ch, byte [ebp - 0x6d]
mov cl, dl
mov al, ch
sub cl, 0x38
and al, cl
add al, al
sub ch, al
sub ch, 0x78
add ch, cl
mov byte [ebp - 0x74], ch
jmp 0x4037f1
lea eax, [esi + 3]
cmp edi, eax
jne 0x4033ec
mov ch, byte [ebp - 0x6d]
mov ah, dl
sub dl, 0x80
mov al, ch
and al, dl
mov cl, ch
add al, al
sub cl, al
sub cl, 0x80
jmp 0x40352e
lea eax, [esi + 1]
cmp edi, eax
jne 0x4035fd
mov ah, dl
mov cl, 0x3b
sub dl, 0x5a
jmp 0x403524
inc eax
cmp edi, eax
jne 0x40361e
sub dl, 0x7e
mov al, ch
and al, dl
mov cl, 0x39
sub cl, al
add cl, cl
add cl, ch
add cl, dl
mov byte [ebp - 0x74], cl
mov edx, dword [ebp - 0x78]
jmp 0x4037ed
lea eax, [esi + 5]
cmp edi, eax
jne 0x40363d
add dl, 0x16
mov al, ch
and al, dl
mov cl, 0x33
sub cl, al
add cl, cl
add cl, ch
add cl, dl
mov al, cl
jmp 0x403846
lea eax, [esi + 7]
cmp edi, eax
jne 0x403658
sub dl, 0x32
mov cl, 0x2f
mov al, ch
and al, dl
sub cl, al
add cl, cl
add cl, ch
jmp 0x403598
lea eax, [esi + 6]
cmp edi, eax
jne 0x40339d
sub dl, 0x7a
mov cl, 0x2b
mov al, ch
and al, dl
sub cl, al
add cl, cl
add cl, ch
jmp 0x4038e0
lea edx, [esi + 1]
cmp edi, edx
jne 0x403688
mov dl, byte [ebp - 0x78]
mov cl, 0x26
sub dl, 0x54
jmp 0x403668
lea eax, [esi + 3]
cmp edi, eax
jne 0x403699
mov dl, byte [ebp - 0x78]
mov cl, 0x22
add dl, 0x64
jmp 0x403649
lea eax, [esi + 4]
cmp edi, eax
jne 0x4036b9
mov dl, byte [ebp - 0x78]
mov al, ch
sub dl, 8
mov cl, 0x1c
and al, dl
sub cl, al
add cl, cl
add cl, ch
mov dh, ch
jmp 0x40380a
lea eax, [edx + 1]
cmp edi, eax
jne 0x4036dc
mov dl, byte [ebp - 0x78]
mov al, ch
sub dl, 0x2c
mov cl, 0x1a
and al, dl
sub cl, al
add cl, cl
add cl, ch
add cl, dl
mov byte [ebp - 0x74], cl
jmp 0x4034f4
mov eax, dword [ebp - 0x74]
cmp esi, 0x2a
jb 0x403358
mov ah, byte [ebp - 0x78]
mov al, ch
mov dl, ah
mov cl, 0x14
add dl, 0x68
mov dh, ch
and al, dl
sub cl, al
add cl, cl
add cl, ch
add cl, dl
add cl, cl
jmp 0x4037d2
mov dl, byte [ebp - 0x78]
mov al, ch
add dl, 0x44
mov cl, ch
and al, dl
sub cl, al
add cl, 0x12
add cl, cl
jmp 0x4036b2
add dl, 0x20
mov al, ch
and al, dl
mov cl, 0x10
sub cl, al
add cl, cl
jmp 0x403598
mov dh, byte [ebp - 0x6d]
mov cl, dl
mov al, dh
add cl, 0x56
and al, cl
add al, al
sub dh, al
sub dh, 0x5a
add dh, cl
mov byte [ebp - 0x74], dh
jmp 0x4038e5
mov ch, byte [ebp - 0x6d]
add dl, 0x7a
mov al, ch
mov cl, ch
and al, dl
mov dh, ch
add al, al
sub cl, al
sub cl, 0x56
add cl, dl
mov byte [ebp - 0x74], cl
jmp 0x4038a3
mov ch, byte [ebp - 0x6d]
mov cl, dl
mov al, ch
sub cl, 0x3e
and al, cl
add al, al
sub ch, al
sub ch, 0x4e
add ch, cl
mov al, ch
mov dword [ebp - 0x74], eax
jmp 0x40384e
mov ch, byte [ebp - 0x6d]
add dl, 0xa
mov al, ch
mov cl, ch
and al, dl
add al, al
sub cl, al
sub cl, 0x46
jmp 0x4036b2
mov ch, byte [ebp - 0x6d]
mov ah, dl
add dl, 0x76
mov al, ch
and al, dl
mov cl, ch
add al, al
sub cl, al
sub cl, 0x3a
jmp 0x40352e
mov ah, byte [ebp - 0x78]
mov al, dh
mov dl, ah
mov cl, dh
sub dl, 0x42
and al, dl
add al, al
sub cl, al
sub cl, 0x32
add cl, dl
mov byte [ebp - 0x74], cl
sub ah, 0x2a
mov cl, 0x13
mov al, ah
and al, dh
sub cl, al
add cl, cl
add cl, ah
add cl, dh
mov edx, dword [ebp - 0x78]
mov byte [ebp + edx - 0x34], cl
inc esi
mov dword [ebp - 0x18], esi
dec edx
jmp 0x4038f1
mov dl, byte [ebp - 0x78]
mov al, dh
add dl, 0x2a
mov cl, dh
and al, dl
add al, al
sub cl, al
sub cl, 0x26
add cl, dl
mov byte [ebp - 0x74], cl
mov dl, byte [ebp - 0x78]
mov cl, 0x11
sub dl, 0x4e
mov al, dl
and al, dh
sub cl, al
mov eax, dword [ebp - 0x74]
add cl, cl
add cl, dl
add cl, dh
mov edx, dword [ebp - 0x78]
add cl, al
mov byte [ebp + edx - 0x34], cl
jmp 0x40384c
mov cl, byte [ebp - 0x78]
mov al, dh
add cl, 0x4e
and al, cl
add al, al
sub dh, al
sub dh, 0x22
add dh, cl
mov al, dh
mov dword [ebp - 0x74], eax
mov edx, dword [ebp - 0x78]
add edi, esi
or ecx, 0xffffffff
movzx eax, al
sub ecx, eax
add edx, ecx
jmp 0x4038f1
mov ecx, dword [ebp - 0x78]
mov dh, byte [ebp - 0x6e]
add ecx, 0xa29fce96
mov al, cl
and al, byte [ebp - 0x7c]
add al, al
sub cl, al
sub cl, 0x1a
add cl, dh
mov byte [ebp - 0x74], cl
mov cl, byte [ebp - 0x78]
mov dl, 0xf
sub cl, 0x72
mov al, cl
and al, dh
sub dl, al
add dl, dl
add dl, cl
mov ecx, dword [ebp - 0x78]
add dl, dh
inc esi
movzx eax, dl
add eax, esi
mov dword [ebp - 0x18], esi
mov byte [ebp + ecx - 0x34], dl
sub ecx, eax
mov dword [ebp - 0x78], ecx
mov dl, byte [ebp - 0x78]
mov cl, 0xe
sub dl, 4
mov al, dl
and al, dh
sub cl, al
or eax, 0xffffffff
add cl, cl
add cl, dl
add cl, dh
mov edx, dword [ebp - 0x78]
inc edi
sub eax, edi
mov byte [ebp + edx - 0x34], cl
add edx, eax
jmp 0x4038e8
mov ecx, dword [ebp - 0x78]
mov dl, byte [ebp - 0x6e]
add ecx, 0x21d118de
mov al, cl
and al, byte [ebp - 0x7c]
add al, al
sub cl, al
sub dl, 0x12
add cl, dl
mov byte [ebp - 0x74], cl
mov edx, dword [ebp - 0x78]
movzx eax, byte [ebp + edx - 0x34]
add eax, esi
add edx, eax
mov eax, dword [ebp - 0x18]
inc edx
jmp 0x402f57
mov ch, byte [ebp - 0x6d]
sub dl, 0x46
mov al, ch
and al, dl
add al, al
sub ch, al
mov eax, dword [ebp - 0x18]
sub ch, 0x16
add ch, dl
mov byte [ebp - 0x74], ch
jmp 0x402f55
mov ch, byte [ebp - 0x6d]
sub dl, 0x22
mov al, ch
and al, dl
add al, al
sub ch, al
sub ch, 0x12
add ch, dl
mov byte [ebp - 0x74], ch
jmp 0x402f47
mov eax, dword [ebp + 0x16e9648]
jmp 0x403946
mov eax, dword [ebp + 0x12243b6]
jmp 0x403946
mov eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x18]
mov dword [0x4caee0], eax
mov dword [ebp - 0x18], 0x100b9a2
call fcn.00402e18
movaps xmm0, xmmword [0x4b65f0]
lea ecx, [ebp - 0x2c]
mov dword [0x4caee4], eax
movups xmmword [ebp - 0x2c], xmm0
mov byte [ebp - 0x1c], 1
call fcn.00402e5a
push eax
mov ecx, 0x4caee8
call fcn.0041437c
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x18], 0x100b1a9
call fcn.00402e18
lea ecx, [ebp - 0x18]
mov dword [0x4caf00], eax
mov dword [ebp - 0x18], 0xbdbfbc
mov byte [ebp - 0x14], 1
call fcn.00402e7b
movaps xmm0, xmmword [0x4b6e10]
xor ecx, ecx
movups xmmword [ebp - 0x6c], xmm0
mov dword [0x4caf04], eax
movaps xmm0, xmmword [0x4b6e30]
movups xmmword [ebp - 0x5c], xmm0
mov dword [ebp - 0x4c], 0x95ae958b
mov dword [ebp - 0x48], 0x97979b9f
mov dword [ebp - 0x44], 0xd68b9b
mov byte [ebp - 0x40], 1
mov al, cl
sub al, 0x31
xor byte [ebp + ecx - 0x6c], al
inc ecx
cmp ecx, 0x2b
jb 0x4039e2
lea eax, [ebp - 0x6c]
mov byte [ebp - 0x40], 0
push eax
mov ecx, 0x4caf08
call fcn.0041437c
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x18], 0x100b1a3
call fcn.00402e18
movaps xmm0, xmmword [0x4b6c10]
lea ecx, [ebp - 0x30]
mov dword [0x4caf20], eax
movups xmmword [ebp - 0x30], xmm0
mov word [ebp - 0x20], 0xb6
mov byte [ebp - 0x1e], 1
call fcn.00402e9c
push eax
mov ecx, 0x4caf24
call fcn.0041437c
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x18], 0x100b9bc
call fcn.00402e18
mov dword [0x4caf3c], eax
mov edi, 0x4caf40
xor eax, eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
mov dword [0x4caf50], eax
mov dword [0x4caf54], 0xf
mov byte [0x4caf40], al
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x18], 0x100b5bf
call fcn.00402e18
movaps xmm0, xmmword [0x4b6c00]
push 0xffffffffffffffd2
pop esi
push 4
mov dword [0x4caf58], eax
movups xmmword [ebp - 0x30], xmm0
mov word [ebp - 0x20], 0x100
pop edi
lea eax, [esi - 1]
movd xmm2, esi
lea edx, [esi - 3]
movd xmm0, eax
movd xmm3, edx
lea ecx, [esi - 2]
punpckldq xmm3, xmm0
movd xmm0, dword [ebp + esi - 2]
punpcklbw xmm0, xmm0
movd xmm1, ecx
punpcklwd xmm0, xmm0
punpckldq xmm1, xmm2
punpckldq xmm3, xmm1
psrad xmm0, 0x18
xorps xmm3, xmm0
andps xmm3, xmmword [0x4b65b0]
packuswb xmm3, xmm3
packuswb xmm3, xmm3
movd dword [ebp + esi - 2], xmm3
add esi, 4
sub edi, 1
jne 0x403aa6
lea eax, [ebp - 0x30]
mov byte [ebp - 0x1f], 0
push eax
mov ecx, 0x4caf5c
call fcn.0041437c
lea ecx, [ebp - 0x7c]
mov dword [ebp - 0x7c], 0x100a5be
call fcn.00402e18
mov dword [0x4caf74], eax
mov eax, 0x4caec0
call fcn.0046c79c
ret