Function at 0x46ac20
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6c
mov eax, edx
mov dword [ebp - 0x14], 0
mov edx, ecx
mov dword [ebp - 0x58], eax
push ebx
push esi
lea esi, [eax + eax*4]
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x3c]
mov ecx, dword [edx + 0x20]
mov ebx, dword [edx]
shl esi, 4
mov eax, dword [eax + 0xc]
add esi, edx
mov dword [ebp - 0x18], ecx
lea edx, [esi + 0x38]
add eax, 8
mov dword [ebp - 0x5c], ebx
push edi
movzx ecx, byte [esi + 0x6c]
mov edi, dword [ebx + 0xc]
shl ecx, 6
add eax, ecx
mov dword [ebp - 0x40], edi
mov ecx, dword [edx]
shr ecx, 0x19
and ecx, 1
mov dword [ebp - 0x50], eax
test dword [edx], 0x800000
mov eax, dword [eax + 0x20]
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x20], edx
mov dword [ebp - 8], eax
mov dword [ebp - 0x10], ecx
je 0x46ac97
test byte [ebp + 8], 0x20
mov dword [ebp - 0x64], 1
je 0x46ac9e
mov dword [ebp - 0x64], 0
mov ecx, edi
call fcn.00425bb0
mov ecx, edi
mov dword [ebp - 0x38], eax
mov dword [esi + 0x60], eax
mov dword [esi + 0x5c], eax
call fcn.00425bb0
cmp byte [esi + 0x6c], 0
mov dword [ebp - 0x54], eax
mov dword [esi + 0x64], eax
jbe 0x46ad23
mov ecx, dword [ebp - 0x50]
test byte [ecx + 0x1c], 8
je 0x46ad23
mov esi, dword [ebx + 0x48]
mov eax, dword [ebp - 0xc]
inc esi
mov dword [ebx + 0x48], esi
mov dword [eax + 0x50], esi
mov eax, dword [edi + 0x1c]
mov dword [ebp - 0x4c], eax
cmp dword [edi + 0x20], eax
jg 0x46acf0
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46ad20
mov eax, dword [ebp - 0x4c]
inc dword [edi + 0x1c]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 4]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [ebp - 0xc]
mov ecx, dword [esi + 0x38]
mov edx, dword [ebp + 0x10]
test ecx, 0x8000000
je 0x46afdb
mov eax, dword [esi + 0x48]
mov esi, dword [ebx + 0x38]
mov dword [ebp - 0x44], eax
mov ecx, dword [eax]
mov edx, dword [eax + 0x10]
mov eax, dword [eax + 4]
inc dword [ebx + 0x54]
mov dword [ebp - 0x4c], eax
lea eax, [ecx + 2]
mov dword [ebp - 0x2c], eax
mov edi, dword [ebp - 0x2c]
mov eax, dword [ebx + 0x3c]
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x24], eax
cmp edi, esi
jg 0x46ad71
add eax, edi
sub esi, edi
mov dword [ebx + 0x3c], eax
mov dword [ebx + 0x38], esi
jmp 0x46ad80
mov eax, dword [ebx + 0x48]
lea esi, [eax + 1]
add eax, dword [ebp - 0x2c]
mov dword [ebp - 0x24], esi
mov dword [ebx + 0x48], eax
mov edi, dword [ebp - 0x40]
mov eax, 1
mov dword [ebp - 0x48], eax
cmp ecx, eax
jl 0x46addf
mov edi, dword [ebp - 0x24]
xor esi, esi
cmp dword [edx + esi*8], eax
je 0x46ada0
inc esi
cmp esi, ecx
jl 0x46ad94
jmp 0x46add0
mov ecx, dword [ebp - 0x4c]
inc eax
add eax, edi
push eax
lea eax, [esi + esi*2]
mov eax, dword [ecx + eax*4 + 8]
mov ecx, ebx
lea edx, [eax + eax*4]
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x20]
mov edx, dword [eax + edx*8]
mov edx, dword [edx + 0xc]
call fcn.0043b270
mov ecx, dword [ebp - 0x50]
add esp, 4
mov eax, dword [ebp - 0x48]
mov edx, dword [ebp - 0x34]
cmp esi, ecx
je 0x46addc
inc eax
mov dword [ebp - 0x48], eax
cmp eax, ecx
jle 0x46ad92
mov edi, dword [ebp - 0x40]
mov eax, dword [ebp - 0x44]
mov esi, dword [edi + 0x1c]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x64], eax
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46ae00
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46ae33
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 0x64]
lea ecx, [esi + esi*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x24]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [edi + 0x1c]
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46ae4b
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46ae80
mov eax, dword [edi + 0x1c]
inc eax
lea ecx, [esi + esi*4]
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0xc], 0
lea ecx, [eax + ecx*4]
mov eax, dword [ebp - 0x48]
dec eax
mov dword [ecx + 0x10], 0
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x24]
inc eax
mov dword [ecx + 8], eax
mov ecx, dword [ebp - 0x44]
mov eax, 0xfffffffe
mov esi, dword [edi + 0x1c]
mov edx, 0xfffffff5
cmp dword [ecx + 0x1c], 0
cmovne eax, edx
mov dword [ebp - 0x64], eax
mov eax, dword [ecx + 0x18]
mov dword [ebp - 0x58], eax
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46aebc
mov ecx, edi
call fcn.00425920
test eax, eax
je 0x46aeb9
mov esi, 1
jmp 0x46aeee
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 8]
lea ecx, [esi + esi*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x38]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [ebp - 0x24]
mov word [eax + ecx*4], 0x88
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
push dword [ebp - 0x64]
mov edx, esi
mov ecx, edi
push dword [ebp - 0x58]
call fcn.00425f90
mov eax, dword [ebp - 0x44]
add esp, 8
mov esi, dword [ebp - 0x50]
mov dword [eax + 0x1c], 0
test esi, esi
jle 0x46af9c
mov edx, dword [ebp - 0x4c]
mov edi, dword [ebp - 0xc]
add edx, 8
mov dword [ebp - 0x64], edx
mov edx, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x64]
add edx, 4
mov dword [ebp - 0x28], edx
nop dword [eax]
cmp byte [edx], 0
je 0x46af88
mov eax, dword [ebx]
lea ecx, [eax + eax*4]
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x20]
lea ecx, [eax + ecx*8]
test ecx, ecx
je 0x46af88
mov dl, byte [ecx + 0x12]
test dl, 4
jne 0x46af85
cmp dword [edi + 0x50], 0
je 0x46af5d
mov eax, dword [ecx]
test byte [eax + 2], 1
je 0x46af85
or dl, 4
mov byte [ecx + 0x12], dl
mov edx, dword [ecx + 4]
test edx, edx
js 0x46af85
mov eax, dword [ecx + 0x14]
lea ecx, [edx + edx*4]
mov eax, dword [eax + 0x20]
add byte [eax + ecx*8 + 0x13], 0xff
lea edx, [eax + ecx*8]
jne 0x46af85
lea ecx, [edi + 0x38]
call fcn.0046a130
mov edx, dword [ebp - 0x28]
add edx, 8
add ebx, 0xc
mov dword [ebp - 0x28], edx
sub esi, 1
jne 0x46af30
mov edi, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x5c]
mov esi, dword [ebp - 0xc]
mov ecx, ebx
mov eax, dword [ebp - 8]
push dword [ebp - 0x2c]
mov byte [esi + 0x6d], 0x8a
mov dword [esi + 0x70], eax
mov eax, dword [edi + 0x1c]
mov dword [esi + 0x74], eax
mov esi, dword [ebp - 0x24]
mov edx, esi
call fcn.00439600
mov eax, dword [ebp - 0x2c]
add esp, 4
cmp eax, dword [ebx + 0x38]
jle 0x46afcf
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], esi
mov ecx, ebx
call fcn.00439660
jmp 0x46c091
test ecx, 0x1000
je 0x46b0eb
mov al, byte [ebx + 0x15]
test al, al
jne 0x46aff6
inc dword [ebx + 0x48]
mov eax, dword [ebx + 0x48]
jmp 0x46b002
dec al
mov byte [ebx + 0x15], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x18]
mov ecx, dword [ebp - 0x18]
push 0
push 3
push edx
push dword [ebp + 0xc]
mov edx, dword [ebp - 8]
push 0xffffffffffffffff
mov dword [ebp - 0x14], eax
call fcn.00466f10
mov edx, dword [ebp - 0x14]
lea ecx, [esi + 0x38]
add esp, 0x14
push edx
push ecx
mov edx, eax
mov ecx, ebx
call fcn.0046a240
mov dword [ebp - 0x48], eax
add esp, 8
mov eax, dword [esi + 0x60]
mov esi, dword [edi + 0x1c]
mov dword [ebp - 0x50], eax
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46b052
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46b085
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 0x48]
lea ecx, [esi + esi*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x50]
mov word [eax + ecx*4], 0x15
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [edi + 0x1c]
cmp dword [edi + 0x20], esi
jg 0x46b098
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46b0cb
mov eax, dword [edi + 4]
lea ecx, [esi + esi*4]
inc dword [edi + 0x1c]
mov edx, dword [ebp - 0x50]
mov esi, dword [ebp - 8]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [ebp - 0x48]
mov word [eax + ecx*4], 0x36
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
jmp 0x46b0ce
mov esi, dword [ebp - 8]
push dword [ebp - 0x48]
mov edx, esi
mov ecx, ebx
push 0xffffffffffffffff
call fcn.004394b0
mov eax, dword [ebp - 0xc]
add esp, 8
mov byte [eax + 0x6d], 0x95
jmp 0x46c094
test ecx, 0x2000
je 0x46b475
mov ecx, dword [ebp - 0x18]
push 0
push 0x24
push edx
push dword [ebp + 0xc]
mov edx, dword [ebp - 8]
push 0xffffffffffffffff
mov dword [ebp - 0x30], 0x95
mov dword [ebp - 0x4c], 0
call fcn.00466f10
mov edx, dword [ebp - 8]
add esp, 0x14
mov ecx, dword [ebp - 0x18]
mov esi, eax
mov dword [ebp - 0x48], eax
push 0
push 0x18
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push 0xffffffffffffffff
call fcn.00466f10
add esp, 0x14
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x10], 0
je 0x46b14d
mov dword [ebp - 0x2c], esi
mov esi, eax
mov dword [ebp - 0x48], esi
test esi, esi
je 0x46b295
mov esi, dword [esi]
lea eax, [ebp - 0x64]
push eax
mov ecx, ebx
mov dword [ebp - 0x34], 0x302e2f31
mov edx, dword [esi + 0xc]
call fcn.0043b1e0
movzx ecx, byte [esi]
add esp, 4
mov esi, dword [edi + 0x1c]
mov dword [ebp - 0x50], eax
mov al, byte [ebp + ecx - 0x81]
mov byte [ebp - 1], al
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46b197
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46b1d0
mov eax, dword [edi + 0x1c]
mov dl, byte [ebp - 1]
lea ecx, [esi + esi*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov byte [eax + ecx*4], dl
mov edx, dword [ebp - 8]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x38]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [ebp - 0x50]
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
jmp 0x46b1d3
mov edx, dword [ebp - 0x50]
push 1
mov ecx, ebx
call fcn.00439600
mov edx, dword [ebp - 0x64]
add esp, 4
test edx, edx
je 0x46b214
mov al, byte [ebx + 0x15]
mov byte [ebp - 1], al
cmp al, 8
jae 0x46b214
xor ecx, ecx
lea eax, [ebx + 0x60]
cmp dword [eax + 0x10], edx
je 0x46b210
inc ecx
add eax, 0x18
cmp ecx, 0xa
jl 0x46b1f5
movzx eax, byte [ebp - 1]
mov dword [ebx + eax*4 + 0x18], edx
inc byte [ebx + 0x15]
jmp 0x46b214
mov byte [eax + 8], 1
mov esi, dword [ebp - 0x48]
mov cl, byte [esi + 0x12]
test cl, 4
jne 0x46b258
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x50], 0
je 0x46b230
mov eax, dword [esi]
test byte [eax + 2], 1
je 0x46b258
or cl, 4
mov byte [esi + 0x12], cl
mov ecx, dword [esi + 4]
test ecx, ecx
js 0x46b258
mov eax, dword [esi + 0x14]
lea ecx, [ecx + ecx*4]
mov eax, dword [eax + 0x20]
add byte [eax + ecx*8 + 0x13], 0xff
lea edx, [eax + ecx*8]
jne 0x46b258
mov ecx, dword [ebp - 0x20]
call fcn.0046a130
mov esi, dword [ebp - 0x10]
mov edx, dword [ebp - 0x2c]
test edx, edx
je 0x46b352
mov esi, dword [edx]
mov ecx, ebx
inc dword [ebx + 0x48]
mov eax, dword [ebx + 0x48]
push eax
mov edx, dword [esi + 0xc]
mov dword [ebp - 0x4c], eax
call fcn.0043b270
mov al, byte [esi]
add esp, 4
cmp al, 0x4f
je 0x46b2f8
cmp al, 0x4d
je 0x46b2f8
mov eax, dword [ebp - 0x10]
lea eax, [eax*2 + 0x4d]
jmp 0x46b305
mov esi, dword [edi + 0x1c]
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46b2ad
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46b258
mov eax, dword [edi + 0x1c]
inc eax
lea ecx, [esi + esi*4]
mov esi, dword [ebp - 0x10]
mov edx, 0x43
mov dword [edi + 0x1c], eax
test esi, esi
mov eax, dword [edi + 4]
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
lea ecx, [eax + ecx*4]
mov eax, 0x48
cmovne eax, edx
mov byte [ecx + 1], 0
mov byte [ecx], al
mov eax, dword [ebp - 8]
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x38]
mov dword [ecx + 8], eax
jmp 0x46b25b
mov eax, dword [ebp - 0x10]
xor eax, 1
lea eax, [eax*2 + 0x4e]
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x30], eax
mov cl, byte [edx + 0x12]
test cl, 4
jne 0x46b34f
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x50], 0
je 0x46b324
mov eax, dword [edx]
test byte [eax + 2], 1
je 0x46b34f
mov esi, dword [edx + 4]
or cl, 4
mov byte [edx + 0x12], cl
test esi, esi
js 0x46b34f
mov eax, dword [edx + 0x14]
lea edx, [esi + esi*4]
mov eax, dword [eax + 0x20]
add byte [eax + edx*8 + 0x13], 0xff
lea edx, [eax + edx*8]
jne 0x46b34c
mov ecx, dword [ebp - 0x20]
call fcn.0046a130
mov edx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x10]
mov ecx, dword [edi + 0x1c]
test esi, esi
mov esi, dword [ebp - 0xc]
mov eax, 0x5f
mov dword [ebp - 0x64], 0x5c
cmovne eax, dword [ebp - 0x64]
cmp dword [ebp - 0x48], 0
mov byte [esi + 0x6d], al
mov eax, esi
mov esi, dword [ebp - 8]
mov dword [eax + 0x70], esi
mov dword [eax + 0x74], ecx
jne 0x46b386
test edx, edx
jne 0x46b386
mov byte [eax + 0x6e], 1
cmp dword [ebp - 0x30], 0x95
je 0x46c094
mov al, byte [ebx + 0x15]
test al, al
jne 0x46b3a5
inc dword [ebx + 0x48]
mov ecx, dword [ebx + 0x48]
mov dword [ebp - 0x14], ecx
jmp 0x46b3b4
dec al
mov byte [ebx + 0x15], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x18]
mov dword [ebp - 0x14], eax
mov esi, dword [edi + 0x1c]
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46b3cc
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46b3ff
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 8]
lea ecx, [esi + esi*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x14]
mov word [eax + ecx*4], 0x41
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
push dword [ebp - 0x14]
mov edx, dword [ebp - 8]
mov ecx, ebx
push 0xffffffffffffffff
call fcn.004394b0
mov esi, dword [edi + 0x1c]
add esp, 8
cmp dword [edi + 0x20], esi
jg 0x46b424
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46b45a
mov eax, dword [edi + 4]
lea ecx, [esi + esi*4]
inc dword [edi + 0x1c]
mov edx, dword [ebp - 0x30]
mov byte [eax + ecx*4], dl
mov edx, dword [ebp - 0x4c]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x38]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [ebp - 0x14]
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x46c091
mov eax, dword [edi + 0x1c]
lea eax, [eax + eax*4]
mov byte [ecx + eax*4 - 0x11], 0x6b
jmp 0x46c091
test ecx, 0x30000
je 0x46bbc7
mov esi, dword [esi + 0x3c]
xor eax, eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x34], esi
mov edx, dword [eax + 0x48]
mov eax, dword [eax + 0x58]
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x4c], edx
mov eax, dword [edx + 8]
mov eax, dword [eax + esi*4]
mov dword [ebp - 0x50], eax
xor eax, eax
test byte [ebp + 8], 1
je 0x46b4cb
test ecx, 0x1000000
je 0x46b4cb
cmp dword [edx + 4], esi
mov dword [ebp - 0x5c], 1
cmovg eax, dword [ebp - 0x5c]
mov dword [ebp - 0x58], eax
test ecx, 0x100000
je 0x46b4fd
mov ecx, dword [ebp - 0x18]
push edx
mov edx, dword [ebp - 8]
push 0x18
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp - 0x50]
call fcn.00466f10
mov ecx, dword [ebp - 0x20]
add esp, 0x14
mov edx, dword [ebp - 0x4c]
mov dword [ebp - 0x24], eax
mov eax, 1
mov ecx, dword [ecx]
test ecx, 0x200000
je 0x46b527
mov ecx, dword [ebp - 0x18]
push edx
mov edx, dword [ebp - 8]
push 0x24
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp - 0x50]
call fcn.00466f10
mov dword [ebp - 0x2c], eax
add esp, 0x14
mov eax, 1
mov edx, dword [ebp - 0x20]
lea ecx, [ebp - 0x1c]
push ecx
push eax
push dword [ebp + 0x10]
mov ecx, ebx
push dword [ebp + 0xc]
push dword [ebp - 0x18]
call fcn.0046a4c0
mov ecx, dword [ebp - 0x1c]
add esp, 0x14
mov dword [ebp - 0x28], eax
test ecx, ecx
jne 0x46b551
mov dword [ebp - 0x44], ecx
jmp 0x46b58a
cmp byte [ecx], 0
mov eax, ecx
je 0x46b55e
inc eax
cmp byte [eax], 0
jne 0x46b558
sub eax, ecx
mov ecx, dword [ebx]
and eax, 0x3fffffff
inc eax
mov edx, eax
mov dword [ebp - 0x5c], eax
call fcn.0040b030
mov ecx, eax
mov dword [ebp - 0x44], ecx
test ecx, ecx
je 0x46b58a
push dword [ebp - 0x5c]
push dword [ebp - 0x1c]
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax + 0x60]
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x48], ecx
cmp esi, dword [eax + 4]
jge 0x46b5b9
mov eax, dword [eax + 0x28]
xor ecx, ecx
cmp byte [esi + eax], cl
sete cl
cmp dword [ebp - 0x10], ecx
jne 0x46b5b9
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x2c], ecx
jmp 0x46b5bf
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
je 0x46b5d0
test byte [ecx + 0x10], 0x28
mov dword [ebp - 0x50], 0
je 0x46b5d7
mov dword [ebp - 0x50], 1
test edx, edx
je 0x46b5e8
test byte [edx + 0x10], 0x28
mov dword [ebp - 0x5c], 0
je 0x46b5ef
mov dword [ebp - 0x5c], 1
test ecx, ecx
jne 0x46b678
test esi, esi
jg 0x46b678
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x30], esi
cmp dword [ebp - 0x58], 0
je 0x46b774
mov ecx, dword [edi + 0x1c]
mov eax, ecx
mov dword [ebp - 0x58], ecx
cmp dword [edi + 0x20], ecx
jg 0x46b629
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46b65f
mov eax, dword [edi + 0x1c]
mov ecx, dword [ebp - 0x58]
inc eax
lea ecx, [ecx + ecx*4]
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov word [eax + ecx*4], 0xa
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
lea ecx, [eax + ecx*4]
mov eax, dword [ebp - 0x28]
add eax, esi
mov dword [ecx + 0xc], 0
mov dword [ecx + 8], eax
mov dword [ecx + 0x10], 0
lea eax, [esi + 1]
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x4c], 1
jmp 0x46b776
mov dword [ebp - 0x4c], 1
mov dword [ebp - 0x30], esi
test ecx, ecx
je 0x46b601
mov eax, dword [ecx]
mov ecx, ebx
add esi, dword [ebp - 0x28]
push esi
mov eax, dword [eax + 0xc]
mov edx, eax
mov dword [ebp - 0x30], eax
call fcn.0043b270
mov edx, dword [ebp - 0x30]
add esp, 4
mov ecx, edi
push dword [ebp - 0x48]
push esi
call fcn.00437c30
mov eax, dword [ebp - 0x1c]
add esp, 8
mov esi, dword [ebp - 0x34]
test eax, eax
je 0x46b759
mov ecx, dword [ebp - 0x30]
mov dl, byte [eax + esi]
mov byte [ebp - 1], dl
mov al, byte [ecx]
cmp al, 0x74
jne 0x46b6e7
mov eax, dword [ecx + 0x10]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov ecx, dword [ecx]
call fcn.00436110
mov ecx, dword [ebp - 0x30]
mov dl, byte [ebp - 1]
jmp 0x46b732
cmp al, 0x25
jne 0x46b6fb
mov ecx, dword [ecx + 4]
call fcn.004419d0
mov ecx, dword [ebp - 0x30]
mov dl, byte [ebp - 1]
jmp 0x46b732
cmp al, 0x9a
je 0x46b707
cmp al, 0x98
je 0x46b707
cmp al, 0x84
jne 0x46b72f
mov eax, dword [ecx + 0x28]
mov dword [ebp - 0x58], eax
test eax, eax
je 0x46b72f
movsx eax, word [ecx + 0x1c]
test eax, eax
jns 0x46b71d
mov al, 0x64
jmp 0x46b736
lea ecx, [eax + eax*2]
mov eax, dword [ebp - 0x58]
mov eax, dword [eax + 0xc]
mov al, byte [eax + ecx*8 + 0x16]
mov ecx, dword [ebp - 0x30]
jmp 0x46b732
mov al, byte [ecx + 1]
test al, al
je 0x46b761
test dl, dl
je 0x46b765
cmp al, 0x63
jge 0x46b743
cmp dl, 0x63
jl 0x46b76b
mov eax, dword [ebp - 0x1c]
mov dl, byte [eax + esi]
call fcn.00437ce0
test eax, eax
je 0x46b759
mov eax, dword [ebp - 0x1c]
mov byte [eax + esi], 0x62
lea eax, [esi + 1]
mov dword [ebp - 0x30], eax
jmp 0x46b776
test dl, dl
je 0x46b76b
add al, dl
cmp al, 0x62
jne 0x46b743
mov eax, dword [ebp - 0x1c]
mov byte [eax + esi], 0x62
jmp 0x46b746
mov eax, esi
push dword [ebp - 0x1c]
mov edx, dword [ebp - 0x28]
mov ecx, ebx
push eax
call fcn.0046a180
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x50]
push eax
mov eax, dword [ebp - 0x4c]
push dword [ebp - 0x28]
push dword [ebp - 0x48]
lea eax, [ecx + eax*2]
mov ecx, dword [ebp - 0x10]
push dword [ebp - 0x38]
movzx edx, byte [ecx + eax*2 + 0x479718]
mov ecx, edi
call fcn.00425af0
mov eax, dword [ebp - 0x24]
add esp, 0x18
mov dword [ebp - 0x58], esi
test eax, eax
je 0x46b8aa
mov eax, dword [eax]
mov ecx, ebx
add esi, dword [ebp - 0x28]
push 1
mov edx, esi
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x58], eax
call fcn.00439600
mov edx, dword [ebp - 0x58]
add esp, 4
mov ecx, ebx
push esi
call fcn.0043b270
add esp, 4
mov ecx, edi
push dword [ebp - 0x48]
push esi
mov esi, dword [ebp - 0x58]
mov edx, esi
call fcn.00437c30
mov eax, dword [ebp - 0x44]
add esp, 8
test eax, eax
je 0x46b890
add eax, dword [ebp - 0x34]
mov dword [ebp - 0x30], eax
mov cl, byte [eax]
mov al, byte [esi]
mov byte [ebp - 1], cl
cmp al, 0x74
jne 0x46b827
mov eax, dword [esi + 0x10]
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov ecx, dword [ecx]
call fcn.00436110
mov cl, byte [ebp - 1]
jmp 0x46b869
cmp al, 0x25
jne 0x46b838
mov ecx, dword [esi + 4]
call fcn.004419d0
mov cl, byte [ebp - 1]
jmp 0x46b869
cmp al, 0x9a
je 0x46b844
cmp al, 0x98
je 0x46b844
cmp al, 0x84
jne 0x46b866
mov edx, dword [esi + 0x28]
test edx, edx
je 0x46b866
movsx eax, word [esi + 0x1c]
test eax, eax
jns 0x46b857
mov al, 0x64
jmp 0x46b86d
lea ecx, [eax + eax*2]
mov eax, dword [edx + 0xc]
mov al, byte [eax + ecx*8 + 0x16]
mov cl, byte [ebp - 1]
jmp 0x46b869
mov al, byte [esi + 1]
test al, al
je 0x46b8dd
test cl, cl
je 0x46b8e1
cmp al, 0x63
jge 0x46b87a
cmp cl, 0x63
jl 0x46b8e7
mov eax, dword [ebp - 0x30]
mov dl, byte [eax]
mov ecx, esi
call fcn.00437ce0
test eax, eax
je 0x46b890
mov eax, dword [ebp - 0x30]
mov byte [eax], 0x62
mov esi, dword [ebp - 0x34]
mov ecx, ebx
push dword [ebp - 0x44]
mov edx, dword [ebp - 0x28]
lea eax, [esi + 1]
push eax
mov dword [ebp - 0x58], eax
call fcn.0046a180
add esp, 8
push dword [ebp - 0x1c]
push dword [ebx]
call fcn.0040add0
push dword [ebp - 0x44]
push dword [ebx]
call fcn.0040add0
mov ecx, dword [ebp - 0xc]
add esp, 0x10
cmp dword [ebp - 0x24], 0
mov eax, dword [edi + 0x1c]
mov dword [ecx + 0x74], eax
jne 0x46b8ef
test esi, esi
jne 0x46b8ef
xor ecx, ecx
mov edx, 0x478804
jmp 0x46b8f9
test cl, cl
je 0x46b8e7
add al, cl
cmp al, 0x62
jne 0x46b87a
mov eax, dword [ebp - 0x30]
mov byte [eax], 0x62
jmp 0x46b87d
mov ecx, 1
mov edx, 0x478805
mov esi, dword [ebp - 0x10]
mov eax, esi
and eax, ecx
movzx edx, byte [eax + edx]
cmp edx, 0x95
je 0x46b939
push dword [ebp - 0x58]
mov ecx, edi
push dword [ebp - 0x28]
push dword [ebp - 0x48]
push dword [ebp - 0x38]
call fcn.00425af0
mov edx, dword [edi + 4]
add esp, 0x10
test edx, edx
je 0x46b939
mov eax, dword [edi + 0x1c]
cmp dword [ebp - 0x5c], esi
setne cl
lea eax, [eax + eax*4]
mov byte [edx + eax*4 - 0x11], cl
mov al, byte [ebx + 0x15]
test al, al
jne 0x46b948
inc dword [ebx + 0x48]
mov esi, dword [ebx + 0x48]
jmp 0x46b954
dec al
mov byte [ebx + 0x15], al
movzx eax, al
mov esi, dword [ebx + eax*4 + 0x18]
mov eax, dword [ebp - 0x20]
test dword [eax], 0x300000
je 0x46b9f8
mov ecx, dword [edi + 0x1c]
mov eax, ecx
mov dword [ebp - 0x5c], ecx
cmp dword [edi + 0x20], ecx
jg 0x46b981
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46b9b0
mov eax, dword [edi + 0x1c]
mov ecx, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x38]
lea ecx, [ecx + ecx*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x34]
mov word [eax + ecx*4], 0x1d
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], esi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [edi + 0x1c]
mov dword [ebp - 0x5c], eax
cmp dword [edi + 0x20], eax
jg 0x46b9c9
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46b9f8
mov eax, dword [ebp - 0x5c]
inc dword [edi + 0x1c]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 4]
mov edx, dword [ebp - 0x54]
mov word [eax + ecx*4], 0x49
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], esi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
test esi, esi
je 0x46ba2e
mov dl, byte [ebx + 0x15]
cmp dl, 8
jae 0x46ba2e
xor ecx, ecx
lea eax, [ebx + 0x60]
nop dword [eax]
cmp dword [eax + 0x10], esi
je 0x46ba2a
inc ecx
add eax, 0x18
cmp ecx, 0xa
jl 0x46ba10
movzx eax, dl
mov dword [ebx + eax*4 + 0x18], esi
inc byte [ebx + 0x15]
jmp 0x46ba2e
mov byte [eax + 8], 1
mov esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0xc]
test esi, esi
je 0x46ba79
mov cl, byte [esi + 0x12]
test cl, 4
jne 0x46ba79
cmp dword [edx + 0x50], 0
je 0x46ba4e
mov eax, dword [esi]
test byte [eax + 2], 1
je 0x46ba79
or cl, 4
mov byte [esi + 0x12], cl
mov ecx, dword [esi + 4]
test ecx, ecx
js 0x46ba79
mov eax, dword [esi + 0x14]
lea ecx, [ecx + ecx*4]
mov eax, dword [eax + 0x20]
add byte [eax + ecx*8 + 0x13], 0xff
lea edx, [eax + ecx*8]
jne 0x46ba76
mov ecx, dword [ebp - 0x20]
call fcn.0046a130
mov edx, dword [ebp - 0xc]
mov esi, dword [ebp - 0x24]
test esi, esi
je 0x46babe
mov cl, byte [esi + 0x12]
test cl, 4
jne 0x46babe
cmp dword [edx + 0x50], 0
je 0x46ba96
mov eax, dword [esi]
test byte [eax + 2], 1
je 0x46babe
or cl, 4
mov byte [esi + 0x12], cl
mov ecx, dword [esi + 4]
test ecx, ecx
js 0x46babe
mov eax, dword [esi + 0x14]
lea ecx, [ecx + ecx*4]
mov eax, dword [eax + 0x20]
add byte [eax + ecx*8 + 0x13], 0xff
lea edx, [eax + ecx*8]
jne 0x46babe
mov ecx, dword [ebp - 0x20]
call fcn.0046a130
cmp dword [ebp - 0x64], 0
jne 0x46bb8b
mov al, byte [ebx + 0x15]
test al, al
jne 0x46bada
inc dword [ebx + 0x48]
mov ecx, dword [ebx + 0x48]
mov dword [ebp - 0x14], ecx
jmp 0x46bae9
dec al
mov byte [ebx + 0x15], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x18]
mov dword [ebp - 0x14], eax
mov esi, dword [edi + 0x1c]
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46bb01
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46bb34
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 0x38]
lea ecx, [esi + esi*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x14]
mov word [eax + ecx*4], 0x63
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
push dword [ebp - 0x14]
mov edx, dword [ebp - 8]
mov ecx, ebx
push 0xffffffffffffffff
call fcn.004394b0
mov esi, dword [edi + 0x1c]
add esp, 8
cmp dword [edi + 0x20], esi
jg 0x46bb59
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46bb8b
mov eax, dword [edi + 4]
lea ecx, [esi + esi*4]
inc dword [edi + 0x1c]
mov edx, dword [ebp - 8]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x14]
mov word [eax + ecx*4], 0x32
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0xc]
test dword [eax], 0x4000000
je 0x46bba8
mov eax, dword [ebp - 0x38]
mov byte [esi + 0x6d], 0x95
mov dword [esi + 0x70], eax
jmp 0x46c091
cmp dword [ebp - 0x10], 0
mov eax, 0x5f
mov ecx, 0x5c
cmovne eax, ecx
mov byte [esi + 0x6d], al
mov eax, dword [ebp - 0x38]
mov dword [esi + 0x70], eax
jmp 0x46c091
test ecx, 0x10000000
je 0x46c018
inc dword [ebx + 0x48]
mov ecx, edi
mov eax, dword [ebx + 0x48]
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x64], 0
call fcn.00425bb0
mov dword [ebp - 0x24], eax
xor eax, eax
mov dword [ebp - 0x48], eax
mov eax, dword [esi + 0x48]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x2c], 0
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x38]
mov dword [esi + 0x70], eax
mov eax, dword [ebp - 0x3c]
mov byte [esi + 0x6d], 3
mov esi, dword [eax + 0x1c]
cmp esi, 1
jle 0x46bccc
sub esi, dword [ebp - 0x58]
mov ecx, dword [ebx]
dec esi
mov edx, esi
shl edx, 6
add edx, 0x48
call fcn.0040b030
mov ecx, eax
mov dword [ebp - 0x44], ecx
test ecx, ecx
jne 0x46bc4e
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esi + 1]
mov word [ecx + 2], ax
mov word [ecx], ax
mov eax, dword [ebp - 0x50]
movups xmm0, xmmword [eax]
movups xmmword [ecx + 8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x18], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx + 0x28], xmm0
movups xmm0, xmmword [eax + 0x30]
mov eax, dword [ebp - 0x3c]
movups xmmword [ecx + 0x38], xmm0
mov eax, dword [eax + 0xc]
add eax, 8
mov dword [ebp - 0x34], eax
cmp esi, 1
jl 0x46bcd2
mov edx, dword [ebp - 0xc]
add edx, 0xbc
add ecx, 0x48
movzx eax, byte [edx]
lea edx, [edx + 0x50]
shl eax, 6
lea ecx, [ecx + 0x40]
add eax, dword [ebp - 0x34]
movups xmm0, xmmword [eax]
movups xmmword [ecx - 0x40], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx - 0x30], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx - 0x20], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx - 0x10], xmm0
sub esi, 1
jne 0x46bc97
jmp 0x46bcd2
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x44], eax
and dword [ebp + 8], 8
jne 0x46bd32
mov eax, dword [ebx + 0x48]
inc eax
mov dword [ebp - 0x4c], eax
inc eax
mov dword [ebx + 0x48], eax
mov esi, dword [edi + 0x1c]
mov dword [ebp - 0x64], eax
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46bcfe
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46bd32
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 0x4c]
lea ecx, [esi + esi*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov word [eax + ecx*4], 0xa
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov esi, dword [edi + 0x1c]
mov eax, esi
mov dword [ebp - 0x28], esi
cmp dword [edi + 0x20], esi
jg 0x46bd56
mov ecx, edi
call fcn.00425920
test eax, eax
je 0x46bd53
mov dword [ebp - 0x28], 1
jmp 0x46bd8a
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 0x38]
lea ecx, [esi + esi*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebp - 0x18]
or esi, 0xffffffff
cmp dword [eax + 0x18], 1
jle 0x46bdcf
mov ecx, dword [ebx]
lea edx, [esi + 0x31]
call fcn.0040b030
mov edx, eax
mov dword [ebp - 0x48], edx
test edx, edx
je 0x46bdc7
push 0x30
push 0
push edx
call sub.VCRUNTIME140.dll_memset
mov edx, dword [ebp - 0x48]
add esp, 0xc
mov byte [edx], 0x45
mov word [edx + 0x1e], si
mov dword [edx + 0x2c], 1
mov eax, dword [ebp + 0x14]
mov dword [edx + 0xc], eax
jmp 0x46bdd1
xor edx, edx
mov eax, dword [ebp - 0x30]
xor esi, esi
mov dword [ebp - 0x34], esi
cmp dword [eax + 0x18], esi
jle 0x46bf19
mov eax, dword [eax + 0x20]
lea ecx, [esi + esi*4]
mov edi, dword [ebp - 8]
cmp dword [eax + ecx*8 + 8], edi
mov edi, dword [ebp - 0x40]
je 0x46be07
mov ebx, 0x200
cmp word [eax + ecx*8 + 0x10], bx
mov ebx, dword [ebp - 0x5c]
jne 0x46bf06
mov eax, dword [eax + ecx*8]
test edx, edx
je 0x46be13
mov dword [edx + 8], eax
mov eax, edx
mov edx, dword [ebp - 0x44]
mov ecx, ebx
push 0xf0
push 0
push 0
push eax
call fcn.0046c300
add esp, 0x10
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x46bf06
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x44]
push 0
movzx ecx, byte [ecx + 0x6c]
push ecx
push dword [ebp - 0x58]
lea ecx, [eax + 0x38]
push ecx
mov ecx, ebx
call fcn.0046a980
add esp, 0x10
cmp word [ebp + 8], 0
jne 0x46be9e
mov eax, dword [ebp - 0x30]
mov ecx, ebx
push dword [ebp - 0x64]
push dword [ebp - 8]
mov eax, dword [eax + 0x18]
dec eax
cmp dword [ebp - 0x34], eax
mov eax, 0xffffffff
push eax
cmove esi, eax
mov eax, dword [ebp - 0x50]
mov edx, dword [eax + 0xc]
call fcn.004397a0
add esp, 0xc
mov edx, 0x72
mov ecx, edi
push esi
push eax
mov eax, dword [edi + 0x1c]
add eax, 2
push eax
push dword [ebp - 0x4c]
call fcn.00425af0
add esp, 0x10
mov esi, dword [edi + 0x1c]
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x46beb6
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46bee9
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 0x38]
lea ecx, [esi + esi*4]
inc eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x24]
mov word [eax + ecx*4], 2
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [ebp - 0x1c]
mov edx, 1
mov eax, dword [ebp - 0x2c]
cmp byte [ecx + 7], 0
cmovne eax, edx
mov dword [ebp - 0x2c], eax
call fcn.0046d0f0
mov esi, dword [ebp - 0x34]
mov eax, dword [ebp - 0x30]
inc esi
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x34], esi
cmp esi, dword [eax + 0x18]
jl 0x46bde2
mov eax, dword [ebp - 0x48]
push eax
push dword [ebx]
call fcn.0040add0
mov esi, dword [edi + 0x1c]
add esp, 8
mov eax, dword [ebp - 0x28]
cmp esi, eax
jbe 0x46bf3e
lea ecx, [eax + eax*4]
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [edi + 0x1c]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 0x5c]
mov dword [ebp - 0x64], eax
cmp dword [edi + 0x20], esi
jg 0x46bf57
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46bf8a
mov eax, dword [edi + 4]
lea ecx, [esi + esi*4]
inc dword [edi + 0x1c]
mov edx, dword [ebp - 0x64]
mov word [eax + ecx*4], 1
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [edi + 0x2c]
test ecx, ecx
je 0x46bfa2
mov eax, dword [ebp - 0x24]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [edi + 0x1c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x3c]
cmp dword [eax + 0x1c], 1
jle 0x46bfb8
push dword [ebp - 0x44]
push dword [ebx]
call fcn.0040add0
add esp, 8
cmp dword [ebp - 0x2c], 0
jne 0x46c091
mov edx, dword [ebp - 0x10]
mov cl, byte [edx + 0x12]
test cl, 4
jne 0x46c091
mov eax, dword [ebp - 0xc]
cmp dword [eax + 0x50], 0
je 0x46bfe6
mov eax, dword [edx]
test byte [eax + 2], 1
je 0x46c091
or cl, 4
mov byte [edx + 0x12], cl
mov ecx, dword [edx + 4]
test ecx, ecx
js 0x46c091
mov eax, dword [edx + 0x14]
lea ecx, [ecx + ecx*4]
mov eax, dword [eax + 0x20]
add byte [eax + ecx*8 + 0x13], 0xff
lea edx, [eax + ecx*8]
jne 0x46c091
mov ecx, dword [ebp - 0x20]
call fcn.0046a130
jmp 0x46c091
mov ecx, dword [ebp - 0x10]
mov al, byte [ecx + 0x479694]
mov byte [esi + 0x6d], al
mov eax, dword [ebp - 8]
mov dword [esi + 0x70], eax
mov al, byte [ecx + 0x47878c]
mov esi, dword [edi + 0x1c]
mov byte [ebp - 1], al
cmp dword [edi + 0x20], esi
jg 0x46c04d
mov ecx, edi
call fcn.00425920
test eax, eax
je 0x46c04d
mov esi, 1
jmp 0x46c084
mov eax, dword [edi + 4]
lea ecx, [esi + esi*4]
inc dword [edi + 0x1c]
mov dl, byte [ebp - 1]
mov byte [eax + ecx*4], dl
mov edx, dword [ebp - 8]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [ebp - 0x38]
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov byte [eax + ecx*4 + 1], 0
mov ecx, dword [ebp - 0xc]
lea eax, [esi + 1]
mov dword [ecx + 0x74], eax
mov byte [ecx + 0x6e], 1
mov esi, dword [ebp - 8]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax + 4]
xor eax, eax
mov edx, dword [ecx]
test edx, edx
jle 0x46c0b1
add ecx, 4
cmp dword [ecx], esi
je 0x46c105
inc eax
add ecx, 4
cmp eax, edx
jl 0x46c0a5
xorps xmm0, xmm0
movlpd qword [ebp - 0x68], xmm0
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x68]
mov eax, dword [ebp + 0xc]
not ecx
and eax, ecx
not edx
mov dword [ebp - 0x50], eax
mov eax, dword [ebp + 0x10]
and eax, edx
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 0x18]
mov edx, dword [eax + 0x18]
mov esi, dword [eax + 0x20]
mov dword [ebp - 0x64], edx
test edx, edx
jle 0x46c150
mov edi, dword [ebp - 0xc]
test byte [esi + 0x12], 6
jne 0x46c142
mov ecx, dword [ebp - 0x50]
mov eax, dword [esi + 0x24]
and ecx, dword [esi + 0x20]
and eax, dword [ebp - 0x4c]
or ecx, eax
je 0x46c11c
mov eax, dword [ebp - 0x3c]
mov byte [eax + 7], 1
jmp 0x46c142
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
jmp 0x46c0bf
cmp dword [edi + 0x50], 0
mov eax, dword [esi]
je 0x46c12a
test byte [eax + 2], 1
je 0x46c142
push 8
push dword [ebp - 0x54]
mov edx, eax
mov ecx, ebx
call fcn.0043baf0
mov edx, dword [ebp - 0x64]
add esp, 8
or byte [esi + 0x12], 4
dec edx
add esi, 0x28
mov dword [ebp - 0x64], edx
test edx, edx
jg 0x46c0e6
mov edi, dword [ebp - 0x40]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ecx + 0x50]
mov dword [ebp - 0x64], eax
test eax, eax
je 0x46c1f8
mov eax, dword [edi + 0x1c]
mov dword [ecx + 0x68], eax
mov esi, dword [edi + 0x1c]
cmp dword [edi + 0x20], esi
jg 0x46c17a
mov ecx, edi
call fcn.00425920
test eax, eax
jne 0x46c1ad
mov eax, dword [edi + 4]
lea ecx, [esi + esi*4]
inc dword [edi + 0x1c]
mov edx, dword [ebp - 0x64]
mov word [eax + ecx*4], 7
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, ebx
call fcn.004398b0
mov edx, dword [ebp - 0x18]
xor edi, edi
mov esi, dword [edx + 0x20]
cmp dword [edx + 0x18], edi
jle 0x46c1f8
test byte [esi + 0x12], 6
jne 0x46c1ef
mov ecx, dword [ebp - 0x50]
mov eax, dword [esi + 0x24]
and ecx, dword [esi + 0x20]
and eax, dword [ebp - 0x4c]
or ecx, eax
jne 0x46c1ef
mov edx, dword [esi]
mov ecx, ebx
push 8
push dword [ebp - 0x54]
call fcn.0043baf0
mov edx, dword [ebp - 0x18]
add esp, 8
or byte [esi + 0x12], 4
inc edi
add esi, 0x28
cmp edi, dword [edx + 0x18]
jl 0x46c1c1
mov esi, dword [ebp - 0x14]
test esi, esi
je 0x46c239
mov dl, byte [ebx + 0x15]
cmp dl, 8
jae 0x46c239
xor ecx, ecx
lea eax, [ebx + 0x60]
nop dword [eax]
cmp dword [eax + 0x10], esi
je 0x46c235
inc ecx
add eax, 0x18
cmp ecx, 0xa
jl 0x46c210
movzx eax, dl
mov edx, dword [ebp - 0x4c]
mov dword [ebx + eax*4 + 0x18], esi
inc byte [ebx + 0x15]
mov eax, dword [ebp - 0x50]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [eax + 8], 1
mov eax, dword [ebp - 0x50]
mov edx, dword [ebp - 0x4c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret