Function at 0x40b20e
Capabilities:
Authenticate hmac

Disassembly:
or eax, dword [ebp - 0x20]
add eax, dword [ebp - 0x18]
pop dword [ebp - 0x14]
pop dword [ebp - 0xc]
sub ecx, dword [ebp - 0x44]
add esi, dword [ebp - 0x64]
pop dword [ebp - 0x70]
cmp dword [ebp - 0x40], 1
je 0x4075cc
push edi
push eax
mov esi, dword [ebp - 0x5c]
xor dword [ebp - 0x58], esi
cmp dword [ebp - 0x54], 0x25
jne 0x4075dc
dec ecx
mov esp, esi
cmp dword [ebp - 0x54], 0x400002
jne 0x4075f6
pop ecx
push ebp
mov ebp, esp
sub esp, 0x1c
mov eax, dword [0x41a539]
or dword [ebp - 0x64], esi
pop dword [ebp - 0x5c]
sub ebx, edi
mov ebx, 0x61eb4c88
mov ebx, eax
ret 8
mov dword [ecx + 8], eax
mov dword [ecx + 0x18], 2
mov eax, dword [ecx + 8]
and dword [ecx + 4], 0
mov edi, dword [ebp - 0x6c]
add edx, ebx
add word [ebp - 0x2c], 0x706
mov ebx, dword [ebp - 0xc]
mov dword [ebp - 0x34], edi
or esi, ecx
lea edi, [ebx + 0x754]
mov dword [ebp - 0x6c], edi
test dword [ebp - 0x54], 0
je 0x40a6cc
mov dword [esi + 0x10], eax
or dword [ebp - 4], 0xffffffff
call fcn.0040ef75
xor dword [ebp - 0x1c], edx
push dword [ebp - 0x6c]
and ebx, dword [ebp - 0x10]
cmp dword [ebp - 0x54], 0x400002
jne 0x40a6e7
and edi, dword [ebp - 0x48]
push dword [ebp - 0xc]
call fcn.0040bb5c
add ecx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x6c]
lea ebx, [ecx + 0x4e3]
xor ebx, esi
or dword [ebp - 0x6c], esi
je 0x40a74b
cmp dword [ebp - 0x40], 1
je 0x40a724
lea eax, [ebp + 0x10]
push eax
push 0x41a244
push dword [ecx + 8]
push esi
push 0x41a276
mov ebx, dword [ebp - 0xc]
lea ebx, [ebx + 0x2c]
push ebx
push dword [ebp - 0x6c]
call fcn.00403e4e
and edx, esi
cmp dword [ebp - 0x40], 0x400002
jne 0x40a746
mov dword [edx], esi
mov dword [edx + 4], edi
jmp 0x40a780
jmp 0x40b872
mov esi, 0x41a495
and ecx, 0x41a29b
and eax, esi
test cx, cx
lea ebx, [ebp - 0x6c]
push ebx
mov ebx, dword [ebp - 0xc]
push dword [ebx + 0x2c]
call fcn.00403e4e
and eax, dword [ebp - 0x1c]
xor ebx, ecx
lea eax, [ebp - 0x60]
push eax
push dword [ebp - 0x6c]
call fcn.00403e4e
lea esi, [ebp - 0x38]
xor eax, dword [ebp - 0x4c]
push esi
or dword [ebp - 0x64], eax
and edx, dword [ebp - 0x34]
push dword [ebp - 0x6c]
call fcn.00403e4e
lea ecx, [ebp - 0x70]
add ebx, dword [ebp - 0x18]
push ecx
cmp dword [ebp - 0x54], 0
je 0x40a7cc
je 0x40a770
mov eax, dword [ebp + 0xc]
mov ecx, esi
push dword [ebp - 0x6c]
call fcn.00403e4e
mov edi, ecx
cmp dword [ebp - 0x40], 0x7e
jne 0x40a7e2
xor eax, eax
inc eax
mov edi, 0xff
and dword [ebp - 0x6c], edi
or ecx, dword [ebp - 0x20]
cmp dword [ebp - 0x40], 0x400002
jne 0x40a807
call fcn.004097f8
mov eax, dword [eax + 0x88]
mov ecx, dword [eax + 4]
xor ebx, esi
mov esi, 0xff00
cmp dword [ebp - 0x54], 0xffffff8f
jne 0x40a822
call fcn.00413803
add eax, 0x10
mov dword [esi], eax
pop ecx
and dword [ebp - 0x60], esi
cmp dword [ebp - 0x54], 0x400002
jne 0x40a838
pop ebp
setl al
pop ebx
mov eax, ecx
mov esi, dword [ebp - 0x60]
shr esi, 8
mov dword [ebp - 0x60], esi
cmp dword [ebp - 0x40], 0x400002
jne 0x40a85c
call dword [0x41a044]
mov dword [0x41a3a1], eax
test eax, eax
jne 0x40a832
mov ebx, 0xff0000
and dword [ebp - 0x38], ebx
mov ecx, dword [ebp - 0x38]
shr ecx, 0x10
mov dword [ebp - 0x38], ecx
xor edx, dword [ebp - 0x4c]
add dword [ebp - 0x64], 0x48
or eax, dword [ebp - 0x68]
mov edx, esi
mov ecx, 0xff000000
and dword [ebp - 0x34], edi
cmp dword [ebp - 0x40], 1
je 0x40a8a5
push ebx
lea esi, [ebp - 0x40]
mov dword [ebp - 0x4c], 1
and dword [ebp - 0x70], ecx
mov edx, dword [ebp - 0x70]
shr edx, 0x18
mov dword [ebp - 0x70], edx
add eax, 0x5f31
lea esi, [ebp - 0x14]
push esi
mov esi, dword [ebp - 0xc]
push dword [esi + 0x7d4]
call fcn.00403e4e
add ecx, edi
xor edx, eax
mov byte [ebp - 0x1c], 0x71
mov ecx, 0xf000
and dword [ebp - 0x14], ecx
add edx, dword [ebp - 0x58]
cmp dword [ebp - 0x14], 0x1000
jne 0x40a90d
add dword [ebp - 0x24], eax
cmp dword [ebp - 0x54], 0x400002
jne 0x40a902
test eax, eax
je 0x40a89a
push ebp
xor esi, esi
push dword [ebp - 0x70]
jmp 0x40a983
and eax, edx
mov dword [ebp - 0x44], 0x394
cmp dword [ebp - 0x14], 0x2000
jne 0x40a947
add eax, dword [ebp - 0x18]
mov word [ebp - 0x50], 0xccc
and eax, dword [ebp - 0x24]
push dword [ebp - 0x38]
cmp dword [ebp - 0x40], 1
je 0x40a93f
push eax
jmp 0x40a983
cmp dword [ebp - 0x14], 0x3000
jne 0x40a97d
add ecx, eax
lea ecx, [eax + 0x316]
mov ecx, edi
mov dword [ebp - 0x34], 0x910
xor dword [ebp - 0x44], 0x139
push dword [ebp - 0x60]
and edi, dword [ebp - 0x18]
and dword [ebp - 0x44], esi
jmp 0x40a983
sub edx, dword [ebp - 0x24]
push dword [ebp - 0x6c]
lea edi, [ebp - 0x14]
push edi
mov edi, dword [ebp - 0xc]
push dword [edi + 0x7d4]
call fcn.00403e4e
mov ecx, 0xf00
and dword [ebp - 0x14], ecx
add esi, dword [ebp - 0x58]
add esi, ecx
or ecx, dword [ebp - 0x1c]
cmp dword [ebp - 0x14], 0x100
jne 0x40aa09
cmp dword [ebp - 0x40], 1
je 0x40a9d3
mov eax, 0x41a264
mov eax, ecx
xor ecx, ecx
mov dword [eax], 0x423b94
mov dword [eax + 0x20], ecx
mov dword [eax + 8], ecx
push dword [ebp - 0x70]
cmp dword [ebp - 0x40], 0x22
jne 0x40a9e2
mov dword [esi + 0x20], eax
jmp 0x40aa7a
cmp dword [ebp - 0x14], 0x200
jne 0x40aa2b
push dword [ebp - 0x38]
add edi, dword [ebp - 0x24]
or edx, eax
jmp 0x40aa7a
or word [ebp - 0x18], 0x680
sub edi, dword [ebp - 0x1c]
cmp dword [ebp - 0x14], 0x300
jne 0x40aa5c
push dword [ebp - 0x60]
add word [ebp - 0x58], 0xc0f
jmp 0x40aa7a
xor edx, dword [ebp - 0x1c]
or dword [ebp - 0x68], 0x6a7
cmp dword [ebp - 0x40], 1
je 0x40aa6f
lea ecx, [esp + 0x18]
call 0x4107d4
push eax
push dword [ebp - 0x6c]
add edi, eax
add word [ebp - 0x34], 0x3da
lea edx, [ebp - 0x14]
push edx
mov edx, dword [ebp - 0xc]
push dword [edx + 0x7d4]
call fcn.00403e4e
xor ecx, eax
cmp dword [ebp - 0x40], 0x400002
jne 0x40aaa5
call esi
cmp eax, ebx
mov dword [0x41a57c], eax
je 0x40aa52
mov edi, edx
mov edi, 0xf0
and edx, ebx
add dword [ebp - 0x34], esi
and dword [ebp - 0x14], edi
cmp dword [ebp - 0x40], 1
je 0x40aabf
ja 0x40aa52
xor ecx, eax
cmp dword [ebp - 0x14], 0x10
jne 0x40aaf0
push dword [ebp - 0x70]
cmp dword [ebp - 0x54], 0x400002
jne 0x40aae8
jmp 0x40ab76
xor dword [ebp - 0x48], 0x140
xor ecx, dword [ebp - 0x64]
cmp dword [ebp - 0x14], 0x20
jne 0x40ab2d
or word [ebp - 0x28], 0x2c6
and dword [ebp - 0x48], ebx
sub edx, dword [ebp - 0x44]
add edx, ebx
push dword [ebp - 0x38]
and dword [ebp - 0x48], 0x5b
or edi, dword [ebp - 0x44]
jmp 0x40ab76
cmp dword [ebp - 0x14], 0x30
jne 0x40ab53
add ecx, dword [ebp - 0x64]
add word [ebp - 0x34], 0xf9c
xor dword [ebp - 0x18], eax
push dword [ebp - 0x60]
jmp 0x40ab76
cmp dword [ebp - 0x54], 0x400002
jne 0x40ab73
mov byte [ebp - 0x1a], 0xcc
mov byte [ebp - 0x19], 0xcc
mov byte [ebp - 0x18], 0xcc
mov byte [ebp - 0x17], 0xcc
mov byte [ebp - 0x16], 0xcc
push dword [ebp - 0x6c]
lea esi, [ebp - 0x14]
push esi
mov esi, dword [ebp - 0xc]
push dword [esi + 0x7d4]
call fcn.00403e4e
or dword [ebp - 0x4c], 0x6e6
xor ebx, edi
mov ecx, 0xf
xor edx, eax
cmp dword [ebp - 0x54], 0x400002
jne 0x40abb4
test eax, eax
je 0x40ab6f
push dword [esp + 0x14]
push eax
call fcn.0040edb9
test eax, eax
and dword [ebp - 0x14], ecx
cmp dword [ebp - 0x40], 0xffffffc7
jne 0x40abd3
call fcn.00405705
add esp, 0x10
pop ebp
push 0x41a204
push 0x41a2e6
xor edi, dword [ebp - 0x18]
add esi, 0xc2c5
cmp dword [ebp - 0x14], 1
jne 0x40abfd
mov dword [ebp - 0x4c], ebx
push dword [ebp - 0x70]
jmp 0x40acb7
xor dword [ebp - 0x50], ebx
cmp dword [ebp - 0x14], 2
jne 0x40ac64
xor edx, ebx
add dword [ebp - 0x54], 0
je 0x40ac25
jb 0x40ac96
mov ecx, dword [ebp + 8]
mov dword [ebx], ecx
mov dword [ebx + 8], eax
cmp dword [ebp - 0x40], 0x400002
jne 0x40ac4c
or ebx, 0x41a2ad
push 0
mov dword [esp + 0x1390], 0x7c
mov dword [esp + 0x40], ebx
call esi
test eax, eax
push dword [ebp - 0x38]
xor word [ebp - 0x58], 0xe82
jmp 0x40acb7
cmp dword [ebp - 0x40], 1
je 0x40ac7a
push ecx
push edi
push eax
push 0x41a597
mov ebx, 0x41a586
cmp dword [ebp - 0x14], 3
jne 0x40acb4
cmp dword [ebp - 0x40], 0x400002
jne 0x40aca1
je 0x4075ac
mov eax, dword [0x41a528]
push dword [ebp - 0x60]
cmp dword [ebp - 0x40], 1
je 0x40acaf
push 0xfffffffffffffffe
jmp 0x40acb7
push dword [ebp - 0x6c]
add esi, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 0x400002
jne 0x40accd
test dh, dh
je 0x40accb
mov ecx, dword [ebp - 0xc]
lea ebx, [ecx + 0x740]
mov dword [ebp - 0x6c], ebx
sub eax, dword [ebp - 0x4c]
sub esi, eax
xor dword [ebp - 0x28], ebx
push dword [ebp - 0x6c]
mov edx, dword [ebp - 0x5c]
add dword [ebp - 0x54], 0
je 0x40acf2
pop eax
dec edi
push dword [edx - 0xc]
cmp dword [ebp - 0x54], 0x27
jne 0x40ad01
mov ebx, dword [ebp - 0x28]
mov dword [ebp - 0x28], 0xd74
mov edx, dword [ebp - 0x60]
add eax, dword [ebp - 0x34]
sub esi, ebx
mov eax, dword [ebp - 0xc]
add eax, 0x614
call dword [eax]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add esp, 0x18
lea esi, [ebp - 0x60]
push esi
mov esi, dword [ebp - 0x5c]
push dword [esi - 0xc]
call fcn.00403e4e
lea edi, [eax + 0x38]
lea eax, [ebp - 0x60]
and word [ebp - 0x50], 0xf6a
xor word [ebp - 0x28], 0x7c1
push eax
cmp dword [ebp - 0x54], 0xffffff91
jne 0x40ad58
mov eax, dword [ebp - 0x135c]
push dword [ebp - 0x6c]
call fcn.00403ed7
cmp dword [ebp - 0x54], 0x400002
jne 0x40ad7b
mov dword [ecx + 0x18], eax
or esi, 0x10
mov eax, esi
and eax, dword [ebp + 8]
pop edi
sub eax, dword [ebp + 8]
mov eax, dword [ebp - 0xc]
cmp dword [eax + 8], 0
jne 0x40ae4d
cmp dword [ebp - 0x40], 0x400002
jne 0x40ad9d
mov dword [esp + 0x58], ebx
call esi
mov edx, dword [ebp - 0xc]
push dword [edx]
xor edi, dword [ebp - 0x50]
xor edx, dword [ebp - 0x74]
mov ecx, dword [ebp - 0x6c]
or dword [ebp - 0x10], edx
mov eax, dword [ebp - 0xc]
mov ebx, edx
mov ebx, ecx
xor ebx, dword [ebp - 0x50]
lea ecx, [eax + 0x7d8]
mov dword [ebp - 0x6c], ecx
sub eax, dword [ebp - 0x10]
and esi, dword [ebp - 0x10]
xor ebx, dword [ebp - 0x68]
cmp dword [ebp - 0x54], 0x56
jne 0x40ade9
invalid
mov eax, dword [esi + ecx*4 - 0x10]
push dword [ebp - 0x6c]
xor word [ebp - 0x48], 0x566
cmp dword [ebp - 0x54], 0
je 0x40ae07
sub eax, ecx
xor edi, dword [ebp - 0x18]
push dword [ebp - 0x60]
add eax, 0xf76b
cmp dword [ebp - 0x40], 0x400002
jne 0x40ae27
je 0x40ade5
cmp ecx, eax
mov edi, ecx
mov edx, dword [ebp - 0x60]
xor dword [ebp - 0x24], 0x4a
and esi, dword [ebp - 0x20]
mov edi, dword [ebp - 0xc]
add edi, 0x614
call dword [edi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
and word [ebp - 0x68], 0x14c
jmp 0x40af16
mov ecx, dword [ebp - 0xc]
push dword [ecx + 8]
cmp dword [ebp - 0x54], 0xfffffff4
jne 0x40ae61
xor word [ebp - 0x18], 0xc63
add esi, 0xa92d
mov edx, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 1
je 0x40ae81
mov dword [esi + 0x10], eax
cmp edi, dword [esi + 0xc]
jl fcn.0040aedc
mov eax, dword [ebp - 0xc]
or word [ebp - 0x18], 0xcab
lea edx, [eax + 0x8d8]
mov dword [ebp - 0x6c], edx
or ebx, ecx
add edx, dword [ebp - 0x50]
test dword [ebp - 0x54], 0
je 0x40aeae
call dword [0x41a0cc]
push esi
lea ecx, [edi + 0x14]
push dword [ebp - 0x6c]
add dword [ebp - 0x10], edx
add edi, ecx
mov edi, 0xedea433d
mov edi, eax
add dword [ebp - 0x54], 0
je 0x40aecd
dec ecx
test ecx, ecx
jg 0x40aeb4
mov ecx, dword [eax]
push dword [ebp - 0x60]
cmp dword [ebp - 0x54], 0x400002
jne 0x40aee3
add ecx, dword [ebp - 0x10]
cmp dword [ebp - 0x54], 0x400002
jne 0x40aef5
mov dword [ebp - 0x18], esp
mov edx, dword [ebp - 0x60]
lea ecx, [ebx + eax*4 + 0x554]
lea ecx, [ebx + 0x1c6]
mov esi, dword [ebp - 0xc]
add esi, 0x614
call dword [esi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add esp, 0xc
add eax, dword [ebp - 0x74]
mov eax, dword [ebp - 0x5c]
add edx, 0x54e0
cmp dword [eax + 0xc], 0
je 0x40b76f
xor edi, esi
and dword [ebp - 0x10], edi
mov edx, dword [ebp - 0xc]
mov ebx, edi
mov ebx, edi
and esi, dword [ebp - 0x50]
push dword [edx + 0xc10]
sub eax, dword [ebp - 0x18]
xor dword [ebp - 0x68], edx
sub eax, esi
push dword [ebp - 0xc]
call fcn.00417991
xor dword [ebp - 0x18], ebx
cmp dword [ebp - 0x40], 1
je 0x40af68
mov ecx, dword [eax]
push 0
cmp dword [ebp - 0x40], 1
je 0x40af83
call fcn.0040cb20
mov al, byte [esp + 0x13]
test al, al
je 0x40afb3
xor dword [ebp - 0x50], edi
cmp dword [ebp - 0x40], 1
je 0x40af91
pop esi
push ebp
push 0x84000000
add eax, dword [ebp - 0x68]
push 0xffffffff
mov edx, dword [ebp - 0x6c]
and eax, dword [ebp - 0x74]
mov ecx, dword [ebp - 0xc]
cmp dword [ebp - 0x54], 0xfffffffb
jne 0x40afba
dec edx
cmp edx, esi
mov dword [ebp - 4], ecx
jbe 0x40afe2
mov edx, esi
lea edx, [ecx + 0x9d8]
mov dword [ebp - 0x6c], edx
or dword [ebp - 0x24], ebx
sub eax, edx
and ebx, dword [ebp - 0x58]
push dword [ebp - 0x6c]
xor eax, edi
mov ecx, dword [ebp - 0x5c]
cmp dword [ebp - 0x40], 1
je 0x40afe4
mov dword [edi + 0x14], esi
mov eax, dword [esi + 0xc]
cmp eax, ebx
push dword [ecx - 0xc]
xor dword [ebp - 0x34], eax
mov edi, dword [ebp - 0x5c]
or dword [ebp - 0x44], eax
push dword [edi - 4]
cmp dword [ebp - 0x40], 0xffffffb2
jne 0x40b000
test esi, esi
jne 0x40b034
mov edx, dword [ebp - 0x60]
mov ecx, dword [ebp - 0xc]
add ecx, 0x654
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
add esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 0x400002
jne 0x40b02b
test bl, 0x40
je 0x40afe2
or dword [ebp - 0x6c], edx
je 0x40b2b1
lea edi, [eax + 0x4d3]
mov ecx, dword [ebp - 0x5c]
lea ecx, [ecx - 8]
push ecx
push dword [ebp - 0x6c]
call fcn.00403e4e
xor ebx, edx
test dword [ebp - 0x54], 0
je 0x40b05d
push dword [ebp + 8]
call eax
pop ecx
cmp dword [ebp - 0x40], 0x400002
jne 0x40b07a
mov ecx, dword [ebp - 0x5c]
mov dword [ecx - 0x18], 0x400
sub esi, dword [ebp - 0x20]
push 0
add dword [ebp - 0x28], 0xffffffc9
add ebx, 0x67b
mov ecx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x5c]
lea ecx, [eax - 0x18]
mov dword [ebp - 0x6c], ecx
sub ecx, esi
xor edx, dword [ebp - 0x28]
push dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 1
je 0x40b0ce
lea ecx, [ebp - 0x24588]
lea ecx, [ebp - 0x24594]
lea ecx, [ebp - 0x2457c]
lea ecx, [ebp - 0x24570]
mov edi, dword [ebp - 0x5c]
push dword [edi - 0x14]
xor ecx, dword [ebp - 0x24]
cmp dword [ebp - 0x40], 0x400002
jne 0x40b0ef
cmp eax, edx
jge 0x40b0a7
mov eax, edx
mov dword [esp + 4], eax
int3
add dword [ebp - 0x54], 0
je 0x40b10c
push 0x13
mov ecx, dword [ebp - 0x5c]
push dword [ecx - 8]
test dword [ebp - 0x54], 0
je 0x40b12e
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40b1a5
mov ecx, dword [eax]
mov edx, dword [ebp - 0x60]
mov esi, edx
mov ecx, dword [ebp - 0xc]
add ecx, 0x658
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
and eax, dword [ebp - 0x74]
mov ebx, dword [ebp - 0x6c]
or dword [ebp - 0x6c], ebx
je 0x40b2a7
mov dword [ebp - 0x34], edx
lea esi, [ebp - 0x60]
push esi
mov esi, dword [ebp - 0x5c]
push dword [esi - 0x14]
call fcn.00403e4e
xor edx, dword [ebp - 0x20]
xor dword [ebp - 0x58], 0x2b
lea edi, [ebp - 0x6c]
push edi
mov edi, dword [ebp - 0xc]
push dword [edi + 0xc08]
call fcn.00403e4e
mov ecx, dword [ebp - 0x60]
cmp dword [ebp - 0x40], 1
je 0x40b18f
call 0x410723
sub ebx, esi
mov ebx, ecx
sub esi, edi
test dword [ebp - 0x54], 0
je 0x40b1af
jg 0x40b165
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov eax, dword [esp + 0x20]
sub ebx, 0x5b
mov eax, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 0x400002
jne 0x40b1d3
push 0
push dword [ebp - 4]
push dword [ebp - 0xc]
call fcn.0040f071
mov eax, 0x41a48e
cmp dword [ebx + 0x5b], eax
jne 0x40b287
add edx, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x5c]
cmp dword [ebp - 0x54], 0xffffffe0
jne 0x40b1f9
push 0x41a3b6
lea ecx, [esp + 0x18]
call 0x4059b6
push dword [ebx - 8]
and edi, dword [ebp - 0x24]
mov edx, dword [ebp - 0x60]
test dword [ebp - 0x54], 0
je 0x40b224
call dword [0x41a08c]
test eax, eax
mov dword [ebp - 0x208], eax
je 0x40b235
mov ebx, dword [0x41a437]
mov ebx, dword [ebp - 0xc]
add ebx, 0x660
call dword [ebx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
sub esi, dword [ebp - 0x74]
mov edi, dword [ebp - 0xc]
xor dword [ebp - 0x18], ecx
push dword [edi + 0xc14]
add eax, dword [ebp - 0x64]
and word [ebp - 0x4c], 0x57b
or dword [ebp - 0x68], 0x478
push dword [ebp - 0xc]
call fcn.00417991
cmp dword [ebp - 0x54], 0x400002
jne 0x40b269
mov edx, dword [ebp - 0xc]
sub dword [edx + 0xc18], 1
cmp dword [ebp - 0x40], 0x400002
jne 0x40b282
test dword [ebp + 8], eax
jmp 0x40b2b6
jmp 0x40b2d5
jmp 0x40b2d5
jmp 0x40b2d5
lea edi, [edx + 0x456]
mov ecx, dword [ebp - 0xc]
cmp dword [ecx + 0xc18], 0
jne 0x40af5d
add ecx, 0xddc1
and edx, dword [ebp - 0x4c]
lea ebx, [ebp - 0x6c]
push ebx
mov ebx, dword [ebp - 0xc]
push dword [ebx + 0xc0c]
call fcn.00403e4e
lea ecx, [ebp - 0x60]
push ecx
mov ecx, dword [ebp - 0x5c]
push dword [ecx - 0x14]
call fcn.00403e4e
mov eax, dword [ebp - 0x60]
and edi, esi
mov edi, eax
add dword [ebp - 0x54], 0
je 0x40b30c
push edi
sub esp, 0x10
mov edi, esp
sub edi, 0x41
mov edx, dword [ebp - 0x6c]
cmp dword [edi + 0x41], edx
jne 0x40b742
cmp dword [ebp - 0x40], 0x33
jne 0x40b32d
mov eax, 0x41a468
int3
add edx, dword [ebp - 0x64]
add ecx, edi
mov esi, dword [ebp - 0x5c]
add ecx, dword [ebp - 0x20]
cmp dword [ebp - 0x40], 0xffffffb0
jne 0x40b345
mov dword [esp + 0x58], ebx
mov dword [esi - 0x18], 4
add word [ebp - 0x50], 0xaa9
mov edi, dword [ebp - 0x5c]
or eax, dword [ebp - 0x58]
add dword [ebp - 0x64], edi
mov dword [edi - 0x28], 0
push 0
sub ebx, dword [ebp - 0x48]
sub edx, edi
cmp dword [ebp - 0x40], 1
je 0x40b38a
mov eax, dword [ebp - 0x6c]
mov edi, dword [ebp - 0x5c]
and ecx, edi
sub ecx, dword [ebp - 0x64]
lea eax, [edi - 0x18]
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x40], 0x50
jne 0x40b3bb
lea eax, [ebp + 0xa0]
push eax
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x1388], 0xb1
push dword [ebp - 0x6c]
lea ebx, [esi + edx*4 + 0x429]
xor ebx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 1
je 0x40b3dc
cmp bl, 0x39
jg 0x40b3a4
push 9
pop eax
mov edx, dword [ebp - 0x5c]
and dword [ebp - 0x50], 0xe1
sub eax, ebx
lea esi, [edx - 0x28]
mov dword [ebp - 0x6c], esi
and dword [ebp - 0x24], ebx
cmp dword [ebp - 0x54], 0
je 0x40b403
mov edx, 0x41a400
mov eax, dword [ecx]
add edx, eax
sub eax, dword [ebp - 0x18]
push dword [ebp - 0x6c]
or edx, dword [ebp - 0x48]
add edx, dword [ebp - 0x44]
push 0x20000005
mov edx, dword [ebp - 0x5c]
push dword [edx - 8]
add eax, dword [ebp - 0x1c]
test dword [ebp - 0x54], 0
je 0x40b439
mov dword [esi + 0x18], eax
call fcn.00404664
pop ebx
mov eax, dword [esi + 0x18]
mov ecx, dword [ebp - 0xc]
pop esi
mov edx, dword [ebp - 0x60]
mov ecx, dword [ebp - 0xc]
add ecx, 0x658
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x54], 0x79
jne 0x40b46a
jne 0x40b435
call ebp
mov esi, eax
cmp esi, ebx
je 0x40b47a
mov dword [0x41a1cf], 1
cmp dword [ebp - 0x6c], 1
jne 0x40b742
or dword [ebp - 0x50], eax
mov edi, dword [ebp - 0x5c]
add edx, 0x4418
cmp dword [edi - 0x28], 0
je 0x40b742
and esi, dword [ebp - 0x68]
lea edi, [ebx + 0x1767]
lea ebx, [ebp - 0x6c]
push ebx
mov ebx, dword [ebp - 0x5c]
push dword [ebx - 0x28]
call fcn.00403e4e
or esi, eax
sub esi, dword [ebp - 0x44]
mov edx, dword [ebp - 0x5c]
lea edx, [edx - 0x24]
push edx
push dword [ebp - 0x6c]
call fcn.00403e4e
xor edi, dword [ebp - 0x24]
xor edx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x5c]
xor eax, dword [ebp - 0x20]
xor eax, ecx
add dword [edx - 0x24], 0x400
and dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x5c]
add ecx, 0x4362
xor dword [ebp - 0x44], edi
mov dword [eax - 0x20], 0
test dword [ebp - 0x54], 0
je 0x40b509
mov dword [esp + 0x38], ebx
call esi
test eax, eax
mov byte [esp + 0x13], 1
push 0x40
push 0x3000
or eax, dword [ebp - 0x34]
add esi, dword [ebp - 0x68]
mov dword [ebp - 0x20], 0xc7f
mov ecx, dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x5c]
test dword [ebp - 0x54], 0
je 0x40b537
mov eax, dword [ecx + 0x30]
cmp eax, edx
lea ecx, [ebx - 0x24]
mov dword [ebp - 0x6c], ecx
or ecx, eax
xor dword [ebp - 0x64], edi
and edi, dword [ebp - 0x4c]
push dword [ebp - 0x6c]
add dword [ebp - 0x4c], ecx
mov word [ebp - 0x34], 0x250
push 0
add dword [ebp - 0x58], ecx
mov esi, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x5c]
and ebx, edx
lea esi, [edx - 0x20]
mov dword [ebp - 0x6c], esi
add ebx, dword [ebp - 0x20]
push dword [ebp - 0x6c]
or dword [ebp - 0x50], 0x339
push 0xffffffff
add dword [ebp - 0x2c], esi
mov edx, dword [ebp - 0x60]
or word [ebp - 0x1c], 0x5ae
mov edi, dword [ebp - 0xc]
add edi, 0x59c
call dword [edi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
lea ecx, [ebp - 0x70]
push ecx
mov ecx, dword [ebp - 0x5c]
push dword [ecx - 0x20]
call fcn.00403e4e
add ebx, 0x8133
or edi, dword [ebp - 0x34]
and esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x5c]
and ecx, dword [ebp - 0x24]
mov dword [ebx - 0x2c], 0
lea eax, [ebp - 0x70]
push eax
mov eax, dword [ebp - 0x5c]
push dword [eax - 0x2c]
call fcn.00403ed7
cmp dword [ebp - 0x54], 0x400002
jne 0x40b5ea
call 0x40887a
push eax
lea eax, [esp + 0xac]
push eax
mov eax, dword [ebp - 0x6c]
add dword [ebp - 0x4c], 0x65
mov edi, dword [ebp - 0x5c]
mov dword [ebp - 0x28], ebx
lea eax, [edi - 0x2c]
mov dword [ebp - 0x6c], eax
xor word [ebp - 0x68], 0x5fe
or dword [ebp - 0x34], edx
push dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 1
je 0x40b629
call fcn.0040a5b5
mov eax, dword [eax + 8]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x30]
lea ecx, [ebp - 0x30]
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x5c]
push dword [ecx - 0x28]
lea ecx, [ebx + edi*8 - 0x3e]
sub edi, esi
push dword [ebp - 0x70]
add dword [ebp - 0x68], ebx
cmp dword [ebp - 0x40], 1
je 0x40b647
mov byte [esi + edi], al
mov edi, dword [ebp - 0x5c]
test dword [ebp - 0x54], 0
je 0x40b65c
mov bl, byte [edi]
inc edi
cmp eax, 0xb
push dword [edi - 8]
or dword [ebp - 0x68], eax
cmp dword [ebp - 0x40], 0x400002
jne 0x40b679
dec ecx
mov dl, byte [ebp + ecx - 0xb]
mov edi, dword [esi]
mov byte [edi], dl
jns 0x40b62f
and eax, dword [ebp - 0x58]
and word [ebp - 0x34], 0x5f6
mov edx, dword [ebp - 0x60]
mov edi, dword [ebp - 0xc]
add edi, 0x65c
call dword [edi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
mov byte [ebp - 0x50], 0x14
and esi, dword [ebp - 0x50]
add edx, esi
mov esi, dword [ebp - 0x6c]
add dword [ebp - 0x10], esi
or dword [ebp - 0x6c], esi
jne 0x40b6ce
sub eax, dword [ebp - 0x74]
jmp 0x40b6fe
or ecx, eax
cmp dword [ebp - 0x6c], 1
jne 0x40b5ab
add eax, dword [ebp - 0x1c]
xor edx, ecx
or ebx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x5c]
or esi, dword [ebp - 0x68]
and eax, dword [ebp - 0x24]
cmp dword [ecx - 0x2c], 0
jne 0x40b5ab
or edx, eax
cmp dword [ebp - 0x6c], 1
jne 0x40b742
mov esi, dword [ebp - 0x5c]
sub ebx, eax
cmp dword [esi - 0x2c], 0
jne 0x40b742
and dword [ebp - 0x50], edx
cmp dword [ebp - 0x40], 0xffffffae
jne 0x40b730
cmp ecx, edx
mov edx, dword [ebp - 0x5c]
mov dword [edx - 0x30], 1
and dword [ebp - 0x20], edx
lea edx, [esi]
mov eax, dword [ebp - 0x5c]
add ecx, 0xd1ca
push dword [eax - 8]
mov edx, dword [ebp - 0x60]
mov edi, eax
or dword [ebp - 0x64], edx
mov ebx, dword [ebp - 0xc]
add ebx, 0x660
call dword [ebx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
xor ecx, dword [ebp - 0x34]
jmp 0x40b872
push 0
push 0x84000000
cmp dword [ebp - 0x54], 0x24
jne 0x40b789
cmp word [eax], 8
lea edi, [ebp - 0x20]
add edi, dword [ebp - 0x44]
push 0xffffffff
or edi, dword [ebp - 0x4c]
xor dword [ebp - 0x24], 0xffffffd7
mov edx, dword [ebp - 0x6c]
or edi, dword [ebp - 0x34]
mov eax, dword [ebp - 0xc]
sub ebx, dword [ebp - 0x34]
cmp dword [ebp - 0x40], 1
je 0x40b7bb
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov dword [esp + 0x137c], edi
lea edx, [eax + 0x9d8]
mov dword [ebp - 0x6c], edx
cmp dword [ebp - 0x40], 1
je 0x40b7d8
push dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x5c]
or esi, dword [ebp - 0x68]
push dword [ecx - 0xc]
mov edi, dword [ebp - 0x5c]
push dword [edi - 4]
or ecx, edi
cmp dword [ebp - 0x40], 1
je 0x40b800
jl 0x40b7fe
cmp dword [esi*4 + 0x42e0a8], edi
je 0x40b7f7
mov edx, dword [ebp - 0x60]
or dword [ebp - 0x4c], 0x6e
and dword [ebp - 0x34], 0x1a
mov ecx, dword [ebp - 0xc]
add ecx, 0x654
call dword [ecx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
mov eax, dword [ebp - 0x6c]
or dword [ebp - 0x6c], eax
je 0x40b872
sub edx, dword [ebp - 0x64]
push dword [ebp - 0x6c]
and dword [ebp - 0x2c], 0x461
and esi, ecx
mov edx, dword [ebp - 0x60]
cmp dword [ebp - 0x40], 0x400002
jne 0x40b850
call dword [0x41a098]
and dword [ebp - 0x14], 0
mov edi, dword [ebp - 0xc]
add edi, 0x660
call dword [edi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x54], 0x15
jne 0x40b872
inc eax
dec esi
jne 0x40b8ce
cmp esi, ebx
je 0x40b86c
mov edi, dword [ebp - 0x5c]
push dword [edi - 4]
xor word [ebp - 0x50], 0x21c
xor dword [ebp - 0x20], ecx
mov ecx, edx
mov edx, dword [ebp - 0x60]
and dword [ebp - 0x4c], 7
mov edi, dword [ebp - 0xc]
add edi, 0x660
call dword [edi]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x54], 0x400002
jne 0x40b8bc
mov ecx, eax
and eax, 0x1f
sar ecx, 5
mov ecx, dword [ecx*4 + 0x42f580]
lea eax, [eax + eax*8]
lea eax, [ecx + eax*4]
mov esi, dword [ebp - 0x5c]
xor dword [ebp - 0x34], edx
xor eax, esi
mov dword [esi - 0x10], 0
xor dword [ebp - 0x1c], ebx
add ecx, dword [ebp - 0x34]
push 0x8000
mov edi, dword [ebp - 0x6c]
xor dword [ebp - 0x2c], 0x3c
mov eax, dword [ebp - 0x5c]
lea edi, [eax - 0x10]
mov dword [ebp - 0x6c], edi
add dword [ebp - 0x54], 0
je 0x40b8fa
jne 0x40b971
mov ecx, dword [ebp + 8]
and dword [ecx + 4], ebx
cmp dword [ebp - 0x54], 0x75
jne 0x40b910
call fcn.00409e2a
mov al, byte [esp + 0x13]
test al, al
je 0x40b943
push dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 1
je 0x40b928
call fcn.00404ae1
mov dword [ebp - 0x20], eax
test byte [ebp - 0x44], 1
mov dword [ebp - 0x58], ecx
mov edx, dword [ebp - 0x6c]
and dword [ebp - 0x64], ebx
mov eax, dword [ebp - 0x5c]
lea edx, [eax - 0xc]
mov dword [ebp - 0x6c], edx
cmp dword [ebp - 0x54], 0
je 0x40b946
pop ecx
test eax, eax
add dword [ebp - 0x54], 0
je 0x40b954
add esp, 0xc
mov eax, dword [eax]
push dword [ebp - 0x6c]
or edi, eax
mov edi, ecx
and dword [ebp - 0x58], 0xfffffff5
sub edi, dword [ebp - 0x10]
push 0xffffffff
add ecx, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x60]
xor dword [ebp - 0x48], 0
mov dword [ebp - 0x50], ebx
mov ebx, dword [ebp - 0xc]
add ebx, 0x5a0
call dword [ebx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
cmp dword [ebp - 0x40], 1
je 0x40b9a0
jbe 0x40b967
xor eax, eax
cmp dword [ecx + 0xf8], esi
cmp dword [ecx + 0x74], 0xe
jbe 0x40b94f
xor eax, eax
add ebx, ecx
mov ebx, 0xf5618ebc
mov ebx, edi
mov ecx, dword [ebp - 0x5c]
mov dword [ecx - 0x18], 0
add edx, dword [ebp - 0x34]
cmp dword [ebp - 0x54], 0x400002
jne 0x40b9d3
inc dword [ebp - 0x2e0]
push dword [ebp + 8]
call fcn.0040ef90
push 0x8000
and edi, esi
or word [ebp - 0x48], 0xb23
add edx, esi
mov ecx, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 1
je 0x40b9f0
jne 0x40ba51
mov ebx, dword [ebp - 0x5c]
sub edx, esi
lea ecx, [ebx - 0x18]
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x1c], ebx
push dword [ebp - 0x6c]
cmp dword [ebp - 0x54], 0
je 0x40ba0c
push edi
push ebp
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x6c]
cmp dword [ebp - 0x40], 1
je 0x40ba2a
jne 0x40ba1b
or bl, 8
call 0x40f8fb
mov esi, eax
mov dword [ebp - 0x20], esi
mov edi, dword [ebp - 0x5c]
lea eax, [edi - 0x14]
mov dword [ebp - 0x6c], eax
or ecx, dword [ebp - 0x74]
add ecx, ebx
push dword [ebp - 0x6c]
add dword [ebp - 0x54], 0
je 0x40ba45
pop esi
cmp dword [ebp - 0x54], 0x36
jne 0x40ba5d
push dword [ebp + 0x20]
push dword [ebp - 0x1c]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push 0xffffffff
or edi, esi
cmp dword [ebp - 0x54], 0xffffffc7
jne 0x40ba72
mov dword [ebp - 4], esi
mov eax, dword [edi]
mov edx, dword [ebp - 0x60]
add ecx, esi
mov ebx, dword [ebp - 0xc]
add ebx, 0x5a0
call dword [ebx]
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x60], edx
lea esi, [ebp - 0x6c]
sub ecx, dword [ebp - 0x68]
push esi
mov ebx, edi
push dword [ebp - 0x6c]
call fcn.00403f5c
or eax, dword [ebp - 0x50]
xor edx, dword [ebp - 0x58]
mov esi, dword [ebp - 0x5c]
and edi, dword [ebp - 0x2c]
cmp dword [ebp - 0x54], 0xffffffd3
jne 0x40babe
mov ecx, dword [esp + 4]
movzx eax, byte [eax + ecx*2]
and eax, 4
call 0x40801c
cmp dword [esi - 0x30], 1
jne 0x40baf3
lea ebx, [ebp - 0x6c]
push ebx
mov ebx, dword [ebp - 0x5c]
push dword [ebx - 0x20]
call fcn.00403e4e
and dword [ebp - 0x2c], edi
or dword [ebp - 0x64], 0x4f8
lea ebx, [ebp - 0x38]
push ebx
mov ebx, dword [ebp - 0x5c]
push dword [ebx - 0x28]
call fcn.00403e4e
or dword [ebp - 0x58], 0xffffffa3
pop dword [ebp - 0xc]
cmp dword [ebp - 0x54], 0x400002
jne 0x40bb0b
je 0x40bb4d
push dword [ebp + 0x24]
test dword [ebp - 0x54], 0
je 0x40bb25
mov edi, dword [ebp + 8]
mov esi, dword [edi + 0x10]
xor ebx, ebx
cmp dword [edi + 4], ebx
mov dword [ebp - 0xc], esi
pop dword [ebp - 0x70]
cmp dword [ebp - 0x40], 1
je 0x40bb36
mov byte [esp + 0x13], 0
pop dword [ebp - 0x14]
mov eax, dword [ebp - 0x5c]
and ecx, dword [ebp - 0x28]
xor ebx, edi
mov esp, eax
and ecx, dword [ebp - 0x18]
xor dword [ebp - 0x64], 0x52
pop dword [ebp - 0x5c]
xor dword [ebp - 0x18], edi
xor edi, dword [ebp - 0x10]
xor dword [ebp - 0x28], eax
ret 8