Function at 0x431220
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x68
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 0x54], eax
push ebx
mov ebx, dword [edx]
lea eax, [eax + eax*4]
shl eax, 4
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp + 0x18]
push esi
mov dword [ebp - 0x48], ecx
lea esi, [edx + 0x38]
mov ecx, dword [edx + 0x20]
add esi, eax
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x38], ecx
add eax, 8
push edi
movzx ecx, byte [esi + 0x34]
mov edi, dword [ebx + 8]
shl ecx, 6
add eax, ecx
mov dword [ebp - 0x64], edx
mov ecx, dword [esi]
shr ecx, 0x19
and ecx, 1
mov dword [ebp - 0x2c], eax
test dword [esi], 0x800000
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 8], eax
mov dword [ebp - 0x1c], ecx
je 0x43129f
test byte [ebp + 0x10], 0x20
mov dword [ebp - 0x30], 1
je 0x4312a6
mov dword [ebp - 0x30], 0
push edi
call fcn.00481450
push edi
mov dword [ebp - 0x40], eax
mov dword [esi + 0x28], eax
mov dword [esi + 0x24], eax
call fcn.00481450
add esp, 8
mov dword [ebp - 0x68], eax
cmp byte [esi + 0x34], 0
mov dword [esi + 0x2c], eax
jbe 0x4312eb
mov eax, dword [ebp - 0x2c]
test byte [eax + 0x1c], 8
je 0x4312eb
mov eax, dword [ebx + 0x4c]
inc eax
push eax
push 0
push 7
mov dword [ebx + 0x4c], eax
push edi
mov dword [esi + 0x18], eax
call fcn.004760b0
add esp, 0x10
mov ecx, dword [esi]
test ecx, 0x8000000
je 0x4316fa
mov ecx, dword [esi + 0x10]
mov esi, dword [ebx + 0x40]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0xc], esi
mov edx, dword [ecx]
mov eax, dword [ecx + 0x10]
mov dword [ebp - 0x58], eax
mov eax, dword [ecx + 4]
inc dword [ebx + 0x5c]
mov ecx, dword [ebx + 0x3c]
mov dword [ebp - 0x2c], eax
lea eax, [edx + 2]
mov dword [ebp - 4], edx
mov dword [ebp - 0x28], eax
cmp eax, ecx
jg 0x431333
add eax, esi
sub ecx, dword [ebp - 0x28]
mov dword [ebx + 0x40], eax
mov dword [ebx + 0x3c], ecx
jmp 0x431342
mov eax, dword [ebx + 0x4c]
lea esi, [eax + 1]
add eax, dword [ebp - 0x28]
mov dword [ebp - 0xc], esi
mov dword [ebx + 0x4c], eax
mov eax, 1
mov dword [ebp - 0x24], eax
cmp edx, eax
jl 0x43147c
lea ecx, [esi + 2]
mov dword [ebp - 0x1c], ecx
mov edi, dword [ebp - 0x58]
xor esi, esi
nop dword [eax]
cmp dword [edi + esi*8], eax
je 0x43136f
inc esi
cmp esi, edx
jl 0x431360
jmp 0x431465
mov ecx, dword [ebp - 0x2c]
lea eax, [esi + esi*2]
mov eax, dword [ecx + eax*4 + 8]
lea ecx, [eax + eax*4]
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x20]
mov eax, dword [eax + ecx*8]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4313ef
cmp byte [eax], 0x84
jne 0x4313ef
mov edi, dword [eax + 0x18]
mov eax, dword [ebx + 8]
mov dword [ebp - 0x30], eax
mov ecx, dword [eax + 0x1c]
mov dword [ebp - 0x14], ecx
cmp dword [eax + 0x20], ecx
jg 0x4313bb
push eax
call fcn.0043e0c0
mov edx, dword [ebp - 4]
add esp, 4
test eax, eax
jne 0x4313ea
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x14]
inc dword [eax + 0x1c]
lea ecx, [ecx + ecx*4]
mov eax, dword [eax + 4]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [ebp - 0x1c]
mov word [eax + ecx*4], 0xe
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [ebp - 0x1c]
jmp 0x431462
push dword [ebp - 0x1c]
push eax
push ebx
call fcn.00459b30
mov ecx, dword [ebp - 0x1c]
mov edi, eax
add esp, 0xc
cmp edi, ecx
je 0x43145f
mov eax, dword [ebx + 8]
mov dword [ebp - 0x30], eax
test eax, eax
je 0x43145f
mov ecx, dword [eax + 0x1c]
mov dword [ebp - 0x14], ecx
cmp dword [eax + 0x20], ecx
jg 0x43142d
push eax
call fcn.0043e0c0
add esp, 4
test eax, eax
jne 0x43145c
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x14]
inc dword [eax + 0x1c]
lea ecx, [ecx + ecx*4]
mov eax, dword [eax + 4]
mov edx, dword [ebp - 0x1c]
mov word [eax + ecx*4], 0xf
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edi
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, dword [ebp - 4]
mov eax, dword [ebp - 0x24]
cmp esi, edx
je 0x431479
inc eax
inc ecx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x1c], ecx
cmp eax, edx
jle 0x431358
mov edi, dword [ebp - 0x50]
mov eax, dword [ebp - 0x20]
mov esi, dword [edi + 0x1c]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x30], eax
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x43149f
push edi
call fcn.0043e0c0
add esp, 4
test eax, eax
jne 0x4314d2
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 0x30]
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 - 0xc]
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 0x4314ec
push edi
call fcn.0043e0c0
add esp, 4
test eax, eax
jne 0x431521
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 - 0x24]
dec eax
mov dword [ecx + 0x10], 0
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ecx + 8], eax
mov ecx, dword [ebp - 0x20]
mov eax, 0xfffffffe
mov esi, dword [edi + 0x1c]
mov edx, 0xfffffff5
cmp dword [ecx + 0x1c], 0
cmovne eax, edx
mov dword [ebp - 0x30], eax
mov eax, dword [ecx + 0x18]
mov dword [ebp - 0x14], eax
mov eax, esi
cmp dword [edi + 0x20], esi
jg 0x43155f
push edi
call fcn.0043e0c0
add esp, 4
test eax, eax
je 0x43155c
mov esi, 1
jmp 0x431591
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 - 0x40]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [ebp - 0xc]
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 - 0x30]
push dword [ebp - 0x14]
push esi
push edi
call fcn.00476550
mov eax, dword [ebp - 0x20]
add esp, 0x10
mov esi, dword [ebp - 4]
mov dword [eax + 0x1c], 0
test esi, esi
jle 0x43163e
mov edx, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x18]
add edx, 8
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x58]
mov edi, dword [ebp - 0x30]
add edx, 4
mov dword [ebp - 4], edx
nop
cmp byte [edx], 0
je 0x43162a
mov eax, dword [edi]
lea ecx, [eax + eax*4]
mov eax, dword [ebp - 0x38]
mov eax, dword [eax + 0x20]
lea ecx, [eax + ecx*8]
test ecx, ecx
je 0x43162a
mov dl, byte [ecx + 0x12]
test dl, 4
jne 0x431627
cmp dword [ebx + 0x18], 0
je 0x4315fd
mov eax, dword [ecx]
test byte [eax + 2], 1
je 0x431627
or dl, 4
mov byte [ecx + 0x12], dl
mov edx, dword [ecx + 4]
test edx, edx
js 0x431627
mov eax, dword [ecx + 0x14]
lea ecx, [edx + edx*4]
mov eax, dword [eax + 0x20]
add byte [eax + ecx*8 + 0x13], 0xff
lea eax, [eax + ecx*8]
jne 0x431627
push eax
push ebx
call fcn.004346c0
add esp, 8
mov edx, dword [ebp - 4]
add edx, 8
add edi, 0xc
mov dword [ebp - 4], edx
sub esi, 1
jne 0x4315d0
mov ebx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x18]
push dword [ebp - 0x28]
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0xc]
mov byte [ecx + 0x35], 0x8a
mov dword [ecx + 0x38], eax
mov eax, dword [edi + 0x1c]
push esi
push ebx
mov dword [ecx + 0x3c], eax
call fcn.00459230
mov eax, dword [ebp - 0x28]
add esp, 0xc
cmp eax, dword [ebx + 0x3c]
jle 0x43166f
mov dword [ebx + 0x3c], eax
mov dword [ebx + 0x40], esi
push 1
push ebx
call fcn.004591d0
add esp, 8
mov esi, dword [ebp - 8]
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax + 4]
xor eax, eax
mov edx, dword [ecx]
test edx, edx
jle 0x4316a0
add ecx, 4
nop
cmp dword [ecx], esi
je 0x43243a
inc eax
add ecx, 4
cmp eax, edx
jl 0x431690
xorps xmm0, xmm0
movlpd qword [ebp - 0x34], xmm0
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x38]
not edx
and dword [ebp - 0x48], edx
not ecx
and dword [ebp - 0x44], ecx
mov edx, dword [eax + 0x18]
mov esi, dword [eax + 0x20]
mov dword [ebp - 0x30], edx
test edx, edx
jle 0x43248a
mov edi, dword [ebp - 0x18]
nop
test byte [esi + 0x12], 6
jne 0x432478
mov ecx, dword [ebp - 0x44]
mov eax, dword [esi + 0x24]
and ecx, dword [esi + 0x20]
and eax, dword [ebp - 0x48]
or ecx, eax
je 0x432454
mov eax, dword [ebp - 0x64]
mov byte [eax + 7], 1
jmp 0x432478
test ecx, 0x1000
je 0x431780
mov al, byte [ebx + 0x13]
test al, al
jne 0x431711
inc dword [ebx + 0x4c]
mov edi, dword [ebx + 0x4c]
jmp 0x43171d
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov edi, dword [ebx + eax*4 + 0x1c]
push 0
push 3
push dword [ebp - 0x48]
mov dword [ebp - 0x5c], edi
push dword [ebp - 0x44]
push 0xffffffffffffffff
push dword [ebp - 8]
push dword [ebp - 0x38]
call fcn.004396c0
push edi
push esi
push eax
push ebx
call fcn.00430f00
mov esi, dword [esi + 0x28]
mov edi, eax
push esi
push edi
push 0x15
push dword [ebp - 0x50]
call fcn.004760b0
push edi
push esi
mov esi, dword [ebp - 8]
push esi
push 0x36
push dword [ebp - 0x50]
call fcn.00476120
add esp, 0x50
push edi
push 0xffffffffffffffff
push esi
push ebx
call fcn.00459290
mov eax, dword [ebp - 0x18]
add esp, 0x10
mov edi, dword [ebp - 0x50]
mov byte [eax + 0x35], 0x95
jmp 0x43167d
test ecx, 0x2000
je 0x431949
push 0
push 0x24
push dword [ebp - 0x48]
mov dword [ebp - 0x20], 0x95
push dword [ebp - 0x44]
mov dword [ebp - 0x2c], 0
push 0xffffffffffffffff
push dword [ebp - 8]
push dword [ebp - 0x38]
call fcn.004396c0
push 0
push 0x18
push dword [ebp - 0x48]
mov dword [ebp - 0xc], eax
push dword [ebp - 0x44]
push 0xffffffffffffffff
push dword [ebp - 8]
push dword [ebp - 0x38]
call fcn.004396c0
mov edx, dword [ebp - 0x1c]
add esp, 0x38
mov ecx, eax
mov dword [ebp - 0x3c], ecx
test edx, edx
je 0x4317e5
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x3c], eax
jmp 0x4317e8
mov ecx, dword [ebp - 0xc]
test ecx, ecx
je 0x431841
mov edi, dword [ecx]
lea eax, [ebp - 0x30]
push eax
mov dword [ebp - 0x28], 0x302e2f31
push dword [edi + 0xc]
push ebx
call fcn.0045ab20
mov edx, dword [ebp - 0x40]
mov esi, eax
movzx eax, byte [edi]
mov edi, dword [ebp - 0x50]
push esi
push edx
push dword [ebp - 8]
movzx eax, byte [ebp + eax - 0x75]
push eax
push edi
call fcn.00476120
push 1
push esi
push ebx
call fcn.00459230
push dword [ebp - 0x30]
push ebx
call fcn.0046cb60
push dword [ebp - 0xc]
mov esi, dword [ebp - 0x18]
push esi
call fcn.004346c0
add esp, 0x3c
jmp 0x431860
push dword [ebp - 0x40]
test edx, edx
mov ecx, 0x43
push dword [ebp - 8]
mov eax, 0x48
cmovne eax, ecx
push eax
push edi
call fcn.004760b0
add esp, 0x10
mov edx, dword [ebp - 0x3c]
test edx, edx
je 0x4318b8
mov esi, dword [edx]
inc dword [ebx + 0x4c]
mov eax, dword [ebx + 0x4c]
push eax
push dword [esi + 0xc]
mov dword [ebp - 0x2c], eax
push ebx
call fcn.004593e0
mov al, byte [esi]
add esp, 0xc
cmp al, 0x4f
je 0x431895
cmp al, 0x4d
je 0x431895
mov eax, dword [ebp - 0x1c]
lea eax, [eax*2 + 0x4d]
jmp 0x4318a2
mov eax, dword [ebp - 0x1c]
xor eax, 1
lea eax, [eax*2 + 0x4e]
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x3c]
push eax
push esi
call fcn.004346c0
mov edx, dword [ebp - 0x3c]
add esp, 8
cmp dword [ebp - 0x1c], 0
mov eax, 0x5f
mov ecx, dword [edi + 0x1c]
mov dword [ebp - 0x30], 0x5c
cmovne eax, dword [ebp - 0x30]
cmp dword [ebp - 0xc], 0
mov byte [esi + 0x35], al
mov eax, dword [ebp - 8]
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], ecx
jne 0x4318e9
test edx, edx
jne 0x4318e9
mov byte [esi + 0x36], 1
mov esi, dword [ebp - 0x20]
cmp esi, 0x95
je 0x432433
push ebx
call fcn.004611f0
push eax
push dword [ebp - 8]
mov dword [ebp - 0x5c], eax
push 0x41
push edi
call fcn.004760b0
push dword [ebp - 0x5c]
push 0xffffffffffffffff
push dword [ebp - 8]
push ebx
call fcn.00459290
push dword [ebp - 0x5c]
push dword [ebp - 0x40]
push dword [ebp - 0x2c]
push esi
push edi
call fcn.00476120
mov ecx, dword [edi + 4]
add esp, 0x38
test ecx, ecx
je 0x43167a
mov eax, dword [edi + 0x1c]
lea eax, [eax + eax*4]
mov byte [ecx + eax*4 - 0x11], 0x6b
jmp 0x43167a
test ecx, 0x30000
je 0x431e89
mov eax, dword [ebp - 0x18]
mov esi, dword [esi + 4]
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x4c], 0
mov edx, dword [eax + 0x10]
mov ebx, dword [eax + 0x20]
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x40], ebx
cmp esi, dword [edx + 0x24]
jne 0x43198d
mov dword [ebp - 0x20], 0xffffffff
jmp 0x431999
mov eax, dword [edx + 4]
mov eax, dword [eax + esi*4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x18]
test byte [ebp + 0x10], 1
mov ebx, dword [ebp - 0x10]
je 0x4319bd
test ecx, 0x1000000
je 0x4319bd
xor edi, edi
mov dword [ebp - 0x14], 1
cmp dword [edx + 0x24], esi
cmovg edi, dword [ebp - 0x14]
mov dword [ebp - 0x4c], edi
mov edi, dword [ebp - 0x4c]
mov dword [ebp - 0x10], edi
mov edi, dword [ebp - 0x50]
test ecx, 0x100000
je 0x4319fa
push edx
push 0x18
push dword [ebp - 0x48]
push dword [ebp - 0x44]
push dword [ebp - 0x20]
push dword [ebp - 8]
push dword [ebp - 0x38]
call fcn.004396c0
mov edx, dword [ebp - 0x2c]
add esp, 0x1c
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x10], 1
mov ecx, dword [eax]
test ecx, 0x200000
je 0x431a29
push edx
push 0x24
push dword [ebp - 0x48]
push dword [ebp - 0x44]
push dword [ebp - 0x20]
push dword [ebp - 8]
push dword [ebp - 0x38]
call fcn.004396c0
mov dword [ebp - 0xc], eax
add esp, 0x1c
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x10], 1
lea ecx, [ebp - 0x60]
push ecx
push dword [ebp - 0x10]
push dword [ebp - 0x48]
push dword [ebp - 0x44]
push dword [ebp - 0x38]
push eax
push ebx
call fcn.00430820
push dword [ebp - 0x60]
mov dword [ebp - 4], eax
push dword [ebx]
call fcn.00456970
mov dword [ebp - 0x3c], eax
add esp, 0x24
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x28]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x2c]
mov edx, dword [eax + 0x24]
cmp esi, edx
jge 0x431a7a
mov eax, dword [eax + 0x1c]
xor ecx, ecx
cmp byte [esi + eax], cl
mov eax, dword [ebp - 0x1c]
sete cl
cmp eax, ecx
je 0x431a85
jmp 0x431a7d
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x431a93
cmp edx, esi
jne 0x431a93
mov edx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0xc], edx
jmp 0x431a99
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x24]
test edx, edx
je 0x431aaa
test byte [edx + 0x10], 0x28
mov dword [ebp - 0x2c], 0
je 0x431ab1
mov dword [ebp - 0x2c], 1
test ecx, ecx
je 0x431ac2
test byte [ecx + 0x10], 0x28
mov dword [ebp - 0x14], 0
je 0x431ac9
mov dword [ebp - 0x14], 1
test edx, edx
jne 0x431b0d
test esi, esi
jg 0x431b0d
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x10], esi
cmp dword [ebp - 0x4c], 0
je 0x431b8c
mov eax, dword [ebp - 4]
add eax, esi
push eax
push 0
push 0xa
push edi
call fcn.004760b0
lea eax, [esi + 1]
mov dword [ebp - 0x2c], 0
add esp, 0x10
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x58], 1
jmp 0x431b8e
mov dword [ebp - 0x58], 1
mov dword [ebp - 0x10], esi
test edx, edx
je 0x431ad7
mov eax, dword [edx]
add esi, dword [ebp - 4]
push esi
mov eax, dword [eax + 0xc]
push eax
push ebx
mov dword [ebp - 0x10], eax
call fcn.004593e0
push dword [ebp - 0x20]
push esi
push dword [ebp - 0x10]
push edi
call fcn.00459970
mov eax, dword [ebp - 0x60]
add esp, 0x1c
mov esi, dword [ebp - 0x28]
test eax, eax
je 0x431b84
add eax, esi
mov dword [ebp - 0x54], eax
mov al, byte [eax]
push eax
push dword [ebp - 0x10]
mov byte [ebp - 0x4c], al
call fcn.00454c90
add esp, 8
cmp al, 0x62
jne 0x431b6c
mov eax, dword [ebp - 0x54]
mov byte [ebp - 0x4c], 0x62
mov byte [eax], 0x62
push dword [ebp - 0x4c]
push dword [ebp - 0x10]
call fcn.0045c300
add esp, 8
test eax, eax
je 0x431b84
mov eax, dword [ebp - 0x54]
mov byte [eax], 0x62
lea eax, [esi + 1]
mov dword [ebp - 0x10], eax
jmp 0x431b8e
mov eax, esi
push dword [ebp - 0x60]
push eax
push dword [ebp - 4]
push ebx
call fcn.00430a40
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x2c]
push eax
mov eax, dword [ebp - 0x58]
push dword [ebp - 4]
push dword [ebp - 0x20]
lea eax, [ecx + eax*2]
mov ecx, dword [ebp - 0x1c]
push dword [ebp - 0x40]
movzx eax, byte [ecx + eax*2 + 0x4bd6f0]
push eax
push edi
call fcn.004761f0
mov eax, dword [ebp - 0x24]
add esp, 0x28
mov dword [ebp - 0x54], esi
test eax, eax
je 0x431c5f
mov eax, dword [eax]
add esi, dword [ebp - 4]
push 1
push esi
mov eax, dword [eax + 0xc]
push ebx
mov dword [ebp - 0x10], eax
call fcn.00459230
push esi
push dword [ebp - 0x10]
push ebx
call fcn.004593e0
push dword [ebp - 0x20]
push esi
push dword [ebp - 0x10]
push edi
call fcn.00459970
mov eax, dword [ebp - 0x3c]
add esp, 0x28
mov esi, dword [ebp - 0x28]
test eax, eax
je 0x431c4b
add eax, esi
mov dword [ebp - 0x2c], eax
mov al, byte [eax]
push eax
push dword [ebp - 0x10]
mov byte [ebp - 0x54], al
call fcn.00454c90
add esp, 8
cmp al, 0x62
jne 0x431c30
mov eax, dword [ebp - 0x2c]
mov byte [ebp - 0x54], 0x62
mov byte [eax], 0x62
push dword [ebp - 0x54]
push dword [ebp - 0x10]
call fcn.0045c300
add esp, 8
test eax, eax
je 0x431c48
mov eax, dword [ebp - 0x2c]
mov byte [eax], 0x62
mov eax, dword [ebp - 0x3c]
push eax
lea ecx, [esi + 1]
push ecx
push dword [ebp - 4]
mov dword [ebp - 0x54], ecx
push ebx
call fcn.00430a40
add esp, 0x10
mov esi, dword [ebx]
test esi, esi
je 0x431cd2
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x431ca5
mov eax, dword [ebp - 0x60]
test eax, eax
je 0x431c91
cmp eax, dword [esi + 0x104]
jb 0x431c91
cmp eax, dword [esi + 0x108]
jae 0x431c91
movzx eax, word [esi + 0xe8]
add dword [ecx], eax
jmp 0x431cde
push eax
call dword [0x4d6498]
mov ecx, dword [esi + 0x1f0]
add esp, 4
add dword [ecx], eax
jmp 0x431cde
mov ecx, dword [ebp - 0x60]
test ecx, ecx
je 0x431cd5
cmp ecx, dword [esi + 0x104]
jb 0x431cd5
cmp ecx, dword [esi + 0x108]
jae 0x431cd5
mov eax, dword [esi + 0x100]
mov dword [ecx], eax
dec dword [esi + 0xec]
mov dword [esi + 0x100], ecx
jmp 0x431cde
mov ecx, dword [ebp - 0x60]
push ecx
call fcn.00422010
add esp, 4
mov esi, dword [ebx]
test esi, esi
je 0x431d51
mov ecx, dword [esi + 0x1f0]
test ecx, ecx
je 0x431d24
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x431d10
cmp eax, dword [esi + 0x104]
jb 0x431d10
cmp eax, dword [esi + 0x108]
jae 0x431d10
movzx eax, word [esi + 0xe8]
add dword [ecx], eax
jmp 0x431d5d
push eax
call dword [0x4d6498]
mov ecx, dword [esi + 0x1f0]
add esp, 4
add dword [ecx], eax
jmp 0x431d5d
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
je 0x431d54
cmp ecx, dword [esi + 0x104]
jb 0x431d54
cmp ecx, dword [esi + 0x108]
jae 0x431d54
mov eax, dword [esi + 0x100]
mov dword [ecx], eax
dec dword [esi + 0xec]
mov dword [esi + 0x100], ecx
jmp 0x431d5d
mov ecx, dword [ebp - 0x3c]
push ecx
call fcn.00422010
add esp, 4
cmp dword [ebp - 0x24], 0
mov ecx, dword [ebp - 0x18]
mov eax, dword [edi + 0x1c]
mov esi, dword [ebp - 0x28]
mov dword [ecx + 0x3c], eax
jne 0x431d7c
test esi, esi
jne 0x431d7c
xor ecx, ecx
mov edx, 0x4bd6f8
jmp 0x431d86
mov ecx, 1
mov edx, 0x4bd6f9
mov eax, dword [ebp - 0x1c]
and eax, ecx
movzx eax, byte [eax + edx]
cmp eax, 0x95
je 0x431dc0
push dword [ebp - 0x54]
mov ecx, dword [ebp - 4]
push ecx
push dword [ebp - 0x20]
push dword [ebp - 0x40]
push eax
push edi
call fcn.004761f0
mov eax, dword [ebp - 0x14]
cmp eax, dword [ebp - 0x1c]
setne al
movzx eax, al
push eax
push edi
call fcn.00476770
add esp, 0x20
push ebx
call fcn.004611f0
mov ecx, eax
add esp, 4
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x14], ecx
test dword [eax], 0x300000
je 0x431dfa
push ecx
push esi
push dword [ebp - 0x40]
push 0x1d
push edi
call fcn.00476120
push dword [ebp - 0x68]
push dword [ebp - 0x14]
push 0x49
push edi
call fcn.004760b0
mov ecx, dword [ebp - 0x14]
add esp, 0x24
push ecx
push ebx
call fcn.0046cb60
push dword [ebp - 0xc]
mov esi, dword [ebp - 0x18]
push esi
call fcn.004346c0
push dword [ebp - 0x24]
push esi
call fcn.004346c0
add esp, 0x18
cmp dword [ebp - 0x30], 0
jne 0x431e53
push ebx
call fcn.004611f0
push eax
push dword [ebp - 0x40]
mov dword [ebp - 0x5c], eax
push 0x63
push edi
call fcn.004760b0
push dword [ebp - 0x5c]
push 0xffffffffffffffff
push dword [ebp - 8]
push ebx
call fcn.00459290
push dword [ebp - 0x5c]
push dword [ebp - 8]
push 0x32
push edi
call fcn.004760b0
add esp, 0x34
test dword [esi], 0x4000000
je 0x431e6a
mov eax, dword [ebp - 0x40]
mov byte [esi + 0x35], 0x95
mov dword [esi + 0x38], eax
jmp 0x43167a
cmp dword [ebp - 0x1c], 0
mov eax, 0x5f
mov ecx, 0x5c
cmovne eax, ecx
mov byte [esi + 0x35], al
mov eax, dword [ebp - 0x40]
mov dword [esi + 0x38], eax
jmp 0x43167a
test ecx, 0x10000000
je 0x4323ff
inc dword [ebx + 0x4c]
mov eax, dword [ebx + 0x4c]
push edi
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x40], 0
call fcn.00481450
mov dword [ebp - 0x3c], eax
add esp, 4
xor eax, eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x24], eax
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x58]
mov dword [esi + 0x38], eax
mov eax, dword [ebp - 0x64]
mov byte [esi + 0x35], 3
mov ecx, dword [eax + 0x1c]
cmp ecx, 1
jle 0x431f98
sub ecx, dword [ebp - 0x54]
dec ecx
mov dword [ebp - 0x30], ecx
shl ecx, 6
add ecx, 0x48
push ecx
push dword [ebx]
call fcn.00456510
mov ecx, eax
add esp, 8
mov dword [ebp - 0xc], ecx
test ecx, ecx
je 0x4325d9
mov edx, dword [ebp - 0x30]
lea eax, [edx + 1]
mov word [ecx + 2], ax
mov word [ecx], ax
mov eax, dword [ebp - 0x2c]
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 - 0x64]
movups xmmword [ecx + 0x38], xmm0
mov eax, dword [eax + 0xc]
add eax, 8
mov dword [ebp - 0x14], eax
cmp edx, 1
jl 0x431f9e
lea eax, [esi + 0x84]
add ecx, 0x48
mov esi, eax
nop dword [eax]
movzx eax, byte [esi]
lea esi, [esi + 0x50]
shl eax, 6
lea ecx, [ecx + 0x40]
add eax, dword [ebp - 0x14]
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 edx, 1
jne 0x431f60
mov esi, dword [ebp - 0x18]
jmp 0x431f9e
mov eax, dword [eax + 0xc]
mov dword [ebp - 0xc], eax
and dword [ebp + 0x10], 8
jne 0x431fc2
mov eax, dword [ebx + 0x4c]
inc eax
push eax
push 0
push 0xa
lea ecx, [eax + 1]
mov dword [ebp - 0x28], eax
push edi
mov dword [ebp - 0x40], ecx
mov dword [ebx + 0x4c], ecx
call fcn.004760b0
add esp, 0x10
push dword [ebp - 0x58]
push 0
push 7
push edi
call fcn.004760b0
mov dword [ebp - 0x60], eax
add esp, 0x10
mov eax, dword [ebp - 0x38]
xor edx, edx
cmp dword [eax + 0x18], 1
jle 0x43216d
xor ecx, ecx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x14], ecx
xor esi, esi
nop
mov eax, dword [eax + 0x20]
mov edi, dword [ecx + eax]
mov dword [ebp - 0x4c], edi
test byte [edi + 2], 1
jne 0x432034
test byte [ecx + eax + 0x12], 0x12
jne 0x432034
mov edi, 0xfff
test word [ecx + eax + 0x10], di
je 0x432034
push 0
push 0
push dword [ebp - 0x4c]
push dword [ebx]
call fcn.00438620
push eax
push esi
push dword [ebx]
call fcn.00458b20
mov ecx, dword [ebp - 0x14]
add esp, 0x1c
mov edx, dword [ebp - 0x30]
mov esi, eax
mov eax, dword [ebp - 0x38]
inc edx
add ecx, 0x28
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x14], ecx
cmp edx, dword [eax + 0x18]
jl 0x431ff0
mov edi, dword [ebp - 0x50]
mov edx, esi
mov dword [ebp - 4], esi
mov esi, dword [ebp - 0x18]
test edx, edx
je 0x43216d
mov ecx, dword [ebx]
mov dword [ebp - 0x30], ecx
test ecx, ecx
je 0x432090
cmp byte [ecx + 0x36], 0
je 0x43206f
xor esi, esi
jmp 0x43215a
cmp byte [ecx + 0xea], 0
je 0x432090
mov eax, 0x30
cmp ax, word [ecx + 0xe8]
jbe 0x432110
inc dword [ecx + 0xf8]
push 0x30
call fcn.00465240
mov esi, eax
add esp, 4
test esi, esi
jne 0x4320b3
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x4320ab
mov byte [eax + 0x36], 1
test esi, esi
je 0x432157
push 0x30
push 0
push esi
call fcn.00498c70
or eax, 0xffffffff
mov byte [esi], 0x45
mov word [esi + 0x1e], ax
mov ecx, 0x100
mov eax, dword [ebp - 4]
add esp, 0xc
mov dword [esi + 0x2c], 1
mov dword [esi + 0xc], eax
test word [eax + 2], cx
je 0x4320ec
or word [esi + 2], cx
mov eax, dword [eax + 0x14]
mov dword [esi + 0x14], eax
push esi
call fcn.00438c10
mov eax, dword [ebx]
add esp, 4
mov eax, dword [eax + 0x58]
cmp dword [esi + 0x2c], eax
jle 0x432165
push eax
push str.Expression_tree_is_too_large__maximum_depth__d_
push ebx
call fcn.004585a0
add esp, 0xc
jmp 0x432165
mov esi, dword [ecx + 0x100]
test esi, esi
jne 0x432125
inc dword [ecx + 0xfc]
jmp 0x432090
mov eax, dword [esi]
mov dword [ecx + 0x100], eax
mov eax, dword [ecx + 0xec]
inc eax
mov dword [ecx + 0xec], eax
inc dword [ecx + 0xf4]
cmp eax, dword [ecx + 0xf0]
jle 0x4320b3
mov dword [ecx + 0xf0], eax
jmp 0x4320b3
mov edx, dword [ebp - 4]
push edx
push dword [ebx]
call fcn.0045ae20
add esp, 8
mov edx, esi
mov esi, dword [ebp - 0x18]
mov dword [ebp - 4], edx
mov ecx, dword [ebp - 0x20]
xor eax, eax
mov dword [ebp - 0x4c], eax
cmp dword [ecx + 0x18], eax
jle 0x4322c0
nop
mov edi, dword [ebp - 8]
lea ecx, [eax + eax*4]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
cmp dword [eax + ecx*8 + 8], edi
mov edi, dword [ebp - 0x50]
je 0x4321a8
mov edi, 0x200
cmp word [eax + ecx*8 + 0x10], di
mov edi, dword [ebp - 0x50]
jne 0x4322aa
mov eax, dword [eax + ecx*8]
test edx, edx
je 0x4321b4
mov dword [edx + 8], eax
mov eax, edx
push 0xf0
push 0
push 0
push eax
push dword [ebp - 0xc]
push ebx
call fcn.00485db0
add esp, 0x18
mov dword [ebp - 0x14], eax
test eax, eax
je 0x4322aa
movzx ecx, byte [esi + 0x34]
push 0
push ecx
push dword [ebp - 0x54]
lea ecx, [eax + 0x38]
push ecx
push dword [ebp - 0xc]
push ebx
call fcn.00436a90
add esp, 0x18
cmp word [ebp + 0x10], 0
jne 0x432239
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x4c]
push 0
push dword [ebp - 0x40]
mov eax, dword [eax + 0x18]
push dword [ebp - 8]
dec eax
cmp esi, eax
mov eax, 0xffffffff
push eax
cmove esi, eax
mov eax, dword [ebp - 0x2c]
push dword [eax + 0xc]
push ebx
call fcn.004594f0
push esi
push eax
mov eax, dword [edi + 0x1c]
add eax, 2
push eax
push dword [ebp - 0x28]
push 0x72
push edi
call fcn.004761f0
mov esi, dword [ebp - 0x18]
add esp, 0x30
mov ecx, dword [edi + 0x1c]
mov eax, ecx
mov dword [ebp - 0x30], ecx
cmp dword [edi + 0x20], ecx
jg 0x432259
push edi
call fcn.0043e0c0
add esp, 4
test eax, eax
jne 0x43228c
mov eax, dword [edi + 0x1c]
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x58]
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 - 0x3c]
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 eax, dword [ebp - 0x14]
mov edx, 1
mov ecx, dword [ebp - 0x10]
push eax
cmp byte [eax + 7], 0
cmovne ecx, edx
mov dword [ebp - 0x10], ecx
call fcn.00486cf0
add esp, 4
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x20]
inc eax
mov edx, dword [ebp - 4]
mov dword [ebp - 0x4c], eax
cmp eax, dword [ecx + 0x18]
jl 0x432180
mov eax, dword [ebp - 4]
test eax, eax
je 0x4322d9
push eax
mov dword [eax + 8], 0
push dword [ebx]
call fcn.0045ae20
add esp, 8
mov edx, dword [edi + 0x1c]
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x30], edx
cmp edx, eax
jbe 0x4322f6
lea ecx, [eax + eax*4]
mov eax, dword [edi + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [edi + 0x1c]
mov dword [ebp - 0x30], edx
mov eax, dword [esi + 0x24]
mov dword [ebp - 0x14], eax
cmp dword [edi + 0x20], edx
jg 0x432311
push edi
call fcn.0043e0c0
add esp, 4
test eax, eax
jne 0x432344
mov edx, dword [ebp - 0x30]
mov eax, dword [edi + 4]
lea ecx, [edx + edx*4]
inc dword [edi + 0x1c]
mov edx, dword [ebp - 0x14]
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 + 0x28]
test ecx, ecx
je 0x43235c
mov eax, dword [ebp - 0x3c]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [edi + 0x1c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x64]
cmp dword [eax + 0x1c], 1
jle 0x4323e7
mov esi, dword [ebx]
mov ecx, dword [ebp - 0xc]
test esi, esi
je 0x4323db
mov eax, dword [esi + 0x1f0]
test eax, eax
je 0x4323b1
test ecx, ecx
je 0x43239b
cmp ecx, dword [esi + 0x104]
jb 0x43239b
cmp ecx, dword [esi + 0x108]
jae 0x43239b
movzx ecx, word [esi + 0xe8]
add dword [eax], ecx
jmp 0x4323e4
push ecx
call dword [0x4d6498]
mov ecx, eax
add esp, 4
mov eax, dword [esi + 0x1f0]
add dword [eax], ecx
jmp 0x4323e4
test ecx, ecx
je 0x4323db
cmp ecx, dword [esi + 0x104]
jb 0x4323db
cmp ecx, dword [esi + 0x108]
jae 0x4323db
mov eax, dword [esi + 0x100]
mov dword [ecx], eax
dec dword [esi + 0xec]
mov dword [esi + 0x100], ecx
jmp 0x4323e4
push ecx
call fcn.00422010
add esp, 4
mov esi, dword [ebp - 0x18]
cmp dword [ebp - 0x10], 0
jne 0x43167a
push dword [ebp - 0x24]
push esi
call fcn.004346c0
jmp 0x431677
mov ecx, dword [ebp - 0x1c]
push dword [ebp - 0x40]
mov al, byte [ecx + 0x4bd6fc]
mov byte [esi + 0x35], al
mov eax, dword [ebp - 8]
push eax
mov dword [esi + 0x38], eax
movzx eax, byte [ecx + 0x4bd700]
push eax
push edi
call fcn.004760b0
add esp, 0x10
mov byte [esi + 0x36], 1
inc eax
mov dword [esi + 0x3c], eax
jmp 0x43167a
mov esi, eax
jmp 0x43167d
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 0x4316ae
cmp dword [edi + 0x18], 0
mov eax, dword [esi]
je 0x432462
test byte [eax + 2], 1
je 0x432478
push 8
push dword [ebp - 0x68]
push eax
push ebx
call fcn.0045b010
mov edx, dword [ebp - 0x30]
add esp, 0x10
or byte [esi + 0x12], 4
dec edx
add esi, 0x28
mov dword [ebp - 0x30], edx
test edx, edx
jg 0x4316d0
mov edi, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x18]
mov eax, dword [ecx + 0x18]
mov dword [ebp - 0x14], eax
test eax, eax
je 0x432598
mov eax, dword [edi + 0x1c]
mov dword [ecx + 0x30], eax
mov ecx, dword [edi + 0x1c]
mov edx, ecx
mov eax, dword [edi + 0x20]
mov dword [ebp - 0x30], ecx
cmp eax, ecx
jg 0x432516
test eax, eax
je 0x4324bc
lea eax, [eax + eax*4]
shl eax, 3
jmp 0x4324c1
mov eax, 0x3fc
push eax
push dword [edi + 4]
push dword [edi]
call fcn.00456710
mov esi, eax
add esp, 0xc
test esi, esi
je 0x43254c
mov eax, dword [edi]
test eax, eax
je 0x4324f4
cmp esi, dword [eax + 0x104]
jb 0x4324f4
cmp esi, dword [eax + 0x108]
jae 0x4324f4
movzx ecx, word [eax + 0xe8]
jmp 0x432500
push esi
call dword [0x4d6498]
add esp, 4
mov ecx, eax
mov eax, 0xcccccccd
mov dword [edi + 4], esi
mul ecx
mov ecx, dword [ebp - 0x30]
shr edx, 4
mov dword [edi + 0x20], edx
mov edx, dword [edi + 0x1c]
lea eax, [edx + 1]
mov edx, dword [ebp - 0x14]
mov dword [edi + 0x1c], eax
lea ecx, [ecx + ecx*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], 1
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
push ebx
call fcn.00458fc0
mov edx, dword [ebp - 0x38]
xor edi, edi
add esp, 4
mov esi, dword [edx + 0x20]
cmp dword [edx + 0x18], edi
jle 0x432598
test byte [esi + 0x12], 6
jne 0x43258f
mov ecx, dword [ebp - 0x44]
mov eax, dword [esi + 0x24]
and ecx, dword [esi + 0x20]
and eax, dword [ebp - 0x48]
or ecx, eax
jne 0x43258f
push 8
push dword [ebp - 0x68]
push dword [esi]
push ebx
call fcn.0045b010
mov edx, dword [ebp - 0x38]
add esp, 0x10
or byte [esi + 0x12], 4
inc edi
add esi, 0x28
cmp edi, dword [edx + 0x18]
jl 0x432562
mov esi, dword [ebp - 0x5c]
test esi, esi
je 0x4325d9
mov dl, byte [ebx + 0x13]
cmp dl, 8
jae 0x4325d9
xor ecx, ecx
lea eax, [ebx + 0x64]
nop dword [eax]
cmp dword [eax + 0x10], esi
je 0x4325d5
inc ecx
add eax, 0x18
cmp ecx, 0xa
jl 0x4325b0
movzx eax, dl
mov edx, dword [ebp - 0x48]
pop edi
mov dword [ebx + eax*4 + 0x1c], esi
inc byte [ebx + 0x13]
mov eax, dword [ebp - 0x44]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov byte [eax + 8], 1
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x44]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret