Function at 0x450860
Capabilities:
Authenticate hmac

Disassembly:
mov ecx, dword [esp + 4]
push ebx
mov eax, ecx
push ebp
shl eax, 5
sub eax, ecx
push esi
xor ebp, ebp
push edi
lea eax, [eax + eax*2]
lea edx, [ecx + eax*4]
mov al, byte [edx*4 + 0x54b71a]
test al, al
lea esi, [edx*4 + 0x54b6e0]
je 0x4508e2
mov edx, dword [esp + 0x18]
test dword [edx], 0x200
je 0x4508be
cmp dword [esi + 0x134], ebp
jne 0x4508c4
cmp al, 8
jbe 0x4508a8
sub al, 8
mov byte [esi + 0x3a], al
jmp 0x4508c4
add ecx, 0x4000
push ebp
push ecx
mov byte [esi + 0x3a], 0
call fcn.00401010
add esp, 8
jmp 0x4508c4
mov dword [esi + 0x134], ebp
mov dword [esi + 0x1c], ebp
mov ecx, dword [esi + 0x14]
mov eax, ecx
shl eax, 5
sub eax, ecx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
mov dword [esi + 0x14], eax
pop edi
pop esi
pop ebp
pop ebx
ret
mov eax, dword [esi + 0x198]
xor edi, edi
cmp eax, ebp
jne 0x4508f6
cmp dword [esi + 0xe0], ebp
jle 0x4508fb
mov edi, 1
mov edx, dword [esi + 0x15c]
dec edx
mov eax, edx
mov dword [esi + 0x15c], edx
cmp eax, 0xfffffff6
jle 0x450914
mov edi, 1
mov ecx, dword [esi + 0x160]
dec ecx
mov eax, ecx
mov dword [esi + 0x160], ecx
cmp eax, 0xfffffff6
jle 0x45092d
mov edi, 1
cmp dword [esi + 0x594], ebp
jne 0x450945
cmp dword [0x574b64], ebp
jne 0x450945
cmp dword [esi + 0x194], ebp
jge 0x450954
mov edi, 1
mov dword [esi + 0x19c], 0xffffffff
mov eax, dword [0x57e728]
mov ebx, dword [esp + 0x18]
test ah, 0x80
je 0x450973
mov eax, dword [ebx]
test ah, 0xa
je 0x450973
and dword [0x57e728], 0x7fff
cmp dword [0x549ca8], 3
jne 0x4509d4
mov eax, dword [0x520f20]
cmp eax, 0x8c
je 0x450996
cmp eax, 0xd2
je 0x450996
cmp eax, 0x118
jne 0x4509a9
push ebp
push ebp
push 0x36
push ebp
push ebp
call fcn.00452de0
mov eax, dword [0x520f20]
add esp, 0x14
cmp eax, 0x15e
jae 0x4509ba
mov edi, 1
cmp eax, 0x15e
jne 0x4509d4
push ebp
push ebp
push 0x35
push ebp
push ebp
mov dword [esi + 0x57c], 0x15e
call fcn.00452de0
add esp, 0x14
cmp dword [esi + 0xb8], 0xa
jle 0x4509e2
mov edi, 1
cmp edi, ebp
je 0x4509f9
mov eax, dword [ebx]
and eax, 0xffffe500
mov dword [ebx], eax
mov dword [esi + 0x140], 0x320
cmp dword [esi + 0x4f8], ebp
jle 0x450a44
mov ecx, dword [ebx]
mov eax, ecx
shl eax, 0x1c
sar eax, 0x1c
neg eax
xor eax, ecx
and eax, 0xf
xor eax, ecx
mov ecx, eax
and al, 0xf
shl ecx, 0x18
sar ecx, 0x1c
neg ecx
and ecx, 0xf
shl ecx, 4
or ecx, eax
mov dword [ebx], ecx
mov ecx, dword [esi + 0x4f8]
dec ecx
mov dword [esi + 0x4f8], ecx
mov dword [esi + 0x120], ebp
mov eax, dword [ebx]
and ah, 0xef
mov dword [ebx], eax
mov eax, dword [esi + 0x88]
cmp eax, 1
jle 0x450a61
shl eax, 7
cmp byte [eax + 0x521f84], 0x70
jne 0x450a61
mov eax, dword [ebx]
and al, 0xf0
mov dword [ebx], eax
mov eax, dword [esi + 0x190]
mov ecx, 0xffff0000
cmp eax, ebp
je 0x450aca
cmp eax, 0x4000
jl 0x450a7d
mov eax, dword [ebx]
and al, 0
mov dword [ebx], eax
mov eax, dword [esi + 0x190]
cmp eax, 0x46
jge 0x450aca
dec eax
cmp eax, 0x20
mov dword [esi + 0x190], eax
je 0x450a9b
mov eax, dword [ebx]
test ah, 8
jne 0x450ab6
mov dword [esi + 0x18], 0xfffa0000
mov eax, dword [esi + 0x10]
add eax, ecx
mov dword [esi + 0x10], eax
mov edx, dword [esi + 0x190]
mov dword [esi + 0xc8], edx
mov eax, dword [ebx]
test ah, 8
jne 0x450ac5
mov dword [esi + 0x190], ebp
jmp 0x450aca
and ah, 0xf7
mov dword [ebx], eax
mov eax, dword [esi + 0x6c]
cmp eax, ebp
je 0x450aef
shl eax, 7
mov eax, dword [eax + 0x521fc0]
cmp eax, 0x407080
je 0x450ae8
cmp eax, 0x408340
jne 0x450aef
mov eax, dword [ebx]
and ah, 0xfd
mov dword [ebx], eax
cmp dword [esi + 0x5a4], ebp
jge 0x450b01
mov dword [esi + 0x19c], 0xffffffba
mov eax, dword [esi + 0x4c0]
cmp eax, 7
jne 0x450c3a
mov eax, dword [ebx]
test al, 0xf
jne 0x450b49
mov dword [esi + 0x1c], ebp
mov eax, dword [esi + 0x14]
cmp eax, ebp
jle 0x450b31
cmp eax, 0x1000
jle 0x450b44
add eax, 0xfffff000
mov dword [esi + 0x14], eax
jmp 0x450b75
jge 0x450b75
cmp eax, 0xfffff000
jge 0x450b44
add eax, 0x1000
mov dword [esi + 0x14], eax
jmp 0x450b75
mov dword [esi + 0x14], ebp
jmp 0x450b75
shl eax, 0x1c
cmp eax, ebp
jle 0x450b61
mov eax, dword [esi + 0x1c]
cmp eax, 0x2000
jge 0x450b75
add eax, 0x800
jmp 0x450b72
jge 0x450b75
mov eax, dword [esi + 0x1c]
cmp eax, 0xffffe000
jle 0x450b75
add eax, 0xfffff800
mov dword [esi + 0x1c], eax
mov eax, dword [ebx]
shl eax, 0x1c
jns 0x450b82
mov byte [esi + 0x45], 0xff
jmp 0x450b8a
cmp eax, ebp
jle 0x450b8a
mov byte [esi + 0x45], 1
mov eax, dword [ebx]
shr eax, 9
and eax, 1
mov dword [esi + 0x134], eax
mov eax, dword [esi + 0x140]
je 0x450bad
cmp eax, 5
jle 0x450bb4
mov dword [esi + 0x140], ebp
jmp 0x450bb4
inc eax
mov dword [esi + 0x140], eax
mov dword [esi + 0xc0], 0x32
mov eax, dword [ebx]
test ah, 8
je 0x450be4
cmp dword [esi + 0x70], ebp
je 0x450bd9
mov dword [esi + 0x18], 0xfffe0000
mov dword [esi + 0xb0], ebp
jmp 0x450c19
mov dword [esi + 0x18], ecx
mov dword [esi + 0xb0], ebp
jmp 0x450c19
cmp dword [esi + 0x70], ebp
je 0x450bf5
shl eax, 0x18
sar eax, 0x1c
inc eax
shl eax, 0xa
jmp 0x450c01
shl eax, 0x18
sar eax, 0x1c
add eax, 2
shl eax, 9
mov ecx, dword [esi + 0x18]
mov dword [esi + 0x20], eax
add ecx, eax
mov eax, dword [esi + 0xb0]
inc eax
mov dword [esi + 0x18], ecx
mov dword [esi + 0xb0], eax
mov ecx, dword [ebx]
shl ecx, 0x1c
sar ecx, 0x1c
mov dword [esi + 0x11c], ecx
mov edx, dword [ebx]
shl edx, 0x18
sar edx, 0x1c
mov dword [esi + 0x118], edx
pop edi
pop esi
pop ebp
pop ebx
ret
cmp eax, 0x2a
mov eax, dword [esi + 0x4cc]
jne 0x450ea2
cmp eax, ebp
je 0x450c54
dec eax
mov dword [esi + 0x4cc], eax
mov eax, dword [esi + 0x184]
cmp eax, ebp
jle 0x450c65
dec eax
mov dword [esi + 0x184], eax
mov dword [esi + 0xc0], 0x64
mov eax, dword [ebx]
test ah, 2
je 0x450cef
mov eax, dword [esi + 0x140]
mov ecx, dword [esi + 0x138]
cmp eax, ecx
jl 0x450cef
mov edx, dword [esi + 0xc]
mov edi, 1
mov dword [esi + 0x134], edi
mov ecx, dword [esi + 0x10]
push ebp
push ebp
push 0xc4
push ecx
push edx
call fcn.00452de0
mov ecx, dword [ebx]
add esp, 0x14
mov eax, ecx
and al, 0xf0
shl eax, 0x18
jns 0x450cc6
test cl, 0xf
jne 0x450cc6
mov dword [esi + 0x144], ebp
mov dword [esi + 0x140], ebp
jmp 0x450cf5
cmp eax, ebp
jge 0x450cdd
test cl, 0xf
je 0x450cdd
mov dword [esi + 0x144], edi
mov dword [esi + 0x140], ebp
jmp 0x450cf5
mov dword [esi + 0x144], 2
mov dword [esi + 0x140], ebp
jmp 0x450cf5
inc dword [esi + 0x140]
cmp dword [esi + 0x140], 0x44
jle 0x450d23
cmp dword [esi + 0x198], ebp
jne 0x450d23
mov eax, dword [ebx]
test al, 0xf
je 0x450d23
shl eax, 0x1c
jns 0x450d1a
mov dword [esi + 0x1c], 0xffffd120
jmp 0x450d4e
mov dword [esi + 0x1c], 0x2ee0
jmp 0x450d4e
mov dword [esi + 0x1c], ebp
mov eax, dword [esi + 0x14]
cmp eax, 0x3e80
jle 0x450d3a
add eax, 0xffffc180
mov dword [esi + 0x14], eax
jmp 0x450d4e
cmp eax, 0xffffc180
jge 0x450d4b
add eax, 0x3e80
mov dword [esi + 0x14], eax
jmp 0x450d4e
mov dword [esi + 0x14], ebp
mov eax, dword [ebx]
shl eax, 0x1c
jns 0x450d5b
mov byte [esi + 0x45], 0xff
jmp 0x450d63
cmp eax, ebp
jle 0x450d63
mov byte [esi + 0x45], 1
mov eax, dword [ebx]
test ah, 8
je 0x450e3f
cmp dword [esi + 0xf8], ebp
jne 0x450e81
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
push ebp
push 0x28
push 0x6b
push eax
push ecx
mov dword [esi + 0xb4], ebp
call fcn.00452de0
mov edx, dword [0x4a1ea4]
mov ecx, 0xa
add esp, 0x14
lea eax, [edx + 1]
cdq
idiv ecx
push ebp
push ebp
mov dword [0x4a1ea4], edx
mov eax, dword [esi + 0x10]
mov edx, dword [edx*4 + 0x486850]
mov ecx, dword [esi + 0xc]
push edx
push eax
push ecx
call fcn.00452de0
mov eax, dword [0x58bbb0]
add esp, 0x14
mov dl, al
sub al, 0x2c
add dl, 4
and eax, 0xff
and edx, 0xff
mov eax, dword [eax + 0x58be00]
mov ecx, edx
mov dword [0x58bbb0], ecx
mov edx, dword [ecx + 0x58be00]
xor edx, eax
test al, 1
mov dword [ecx + 0x58be00], edx
je 0x450e14
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
push ebp
push ebp
push 0xbd
push eax
push ecx
call fcn.00452de0
add esp, 0x14
mov eax, dword [esi + 0x14]
cmp eax, ebp
jg 0x450e1d
neg eax
cdq
and edx, 3
mov dword [esi + 0xb0], ebp
add eax, edx
mov edx, dword [esi + 0xbc]
sar eax, 2
sub edx, eax
mov dword [esi + 0x18], edx
mov dword [esi + 0xc8], ebp
jmp 0x450e81
cmp dword [esi + 0xc8], ebp
jne 0x450e7b
cmp dword [esi + 0x180], ebp
jne 0x450e7b
mov eax, dword [esi + 0x18]
cmp eax, 0xffff0000
jge 0x450e63
add eax, 0x8000
mov dword [esi + 0x18], eax
jmp 0x450e7b
cmp eax, 0xffffc000
jge 0x450e74
add eax, 0x4000
mov dword [esi + 0x18], eax
jmp 0x450e7b
cmp eax, ebp
jge 0x450e7b
mov dword [esi + 0x18], ebp
inc dword [esi + 0xb0]
mov eax, dword [ebx]
test al, 0xff
jne 0x450e97
test ah, 0xa
jne 0x450e97
inc dword [esi + 0x120]
pop edi
pop esi
pop ebp
pop ebx
ret
mov dword [esi + 0x120], ebp
pop edi
pop esi
pop ebp
pop ebx
ret
cmp eax, ebp
je 0x450ead
dec eax
mov dword [esi + 0x4cc], eax
mov eax, dword [esi + 0x184]
cmp eax, ebp
jle 0x450ebe
dec eax
mov dword [esi + 0x184], eax
cmp dword [esi + 0x98], 2
jne 0x450ee8
mov dword [esi + 0x1c], ebp
mov dword [esi + 0x14], ebp
mov eax, dword [ebx]
shl eax, 0x1c
jns 0x450eda
mov byte [esi + 0x45], 0xff
jmp 0x450ee2
cmp eax, ebp
jle 0x450ee2
mov byte [esi + 0x45], 1
mov eax, dword [ebx]
and al, 0xf0
mov dword [ebx], eax
mov eax, dword [esi + 0x88]
mov ecx, 0xfffe0000
cmp eax, 0xffffffff
mov edi, 0x40000
mov bl, 0x11
mov edx, 0x20000
jne 0x4510e9
cmp dword [esi + 0x184], ebp
jne 0x4510e9
cmp dword [esi + 0x160], ebp
jge 0x4510e9
cmp dword [esi + 0x15c], ebp
jge 0x4510e9
mov eax, dword [esi + 0x14]
cmp eax, ebp
jg 0x450f35
neg eax
cdq
and edx, 0xffff
add eax, edx
sar eax, 0x10
add eax, 8
cmp eax, 0x30
jle 0x450f4e
mov eax, 0x30
cmp dword [esi + 0xf8], ebp
je 0x450f74
mov ecx, dword [esi + 0x104]
shl ecx, 6
add ecx, 0x4650
cmp ecx, 0x6590
jle 0x450f79
mov ecx, 0x6590
jmp 0x450f79
mov ecx, 0x4650
mov edx, dword [esi + 0x154]
push edx
push ecx
mov ecx, dword [esi + 0xc]
push eax
mov eax, dword [esi + 0x10]
push 0x31
push eax
push ecx
call fcn.00452ed0
mov dword [esi + 0x154], eax
mov eax, dword [esi + 0x150]
add esp, 0x18
cmp eax, 2
jne 0x450fbe
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
push 0x4099
push 0x64
push 0x33
push edx
push eax
call fcn.00452de0
add esp, 0x14
cmp dword [esi + 0x150], 0xc
jne 0x451001
mov eax, dword [esi + 0x14]
cmp eax, ebp
jg 0x450fd0
neg eax
cdq
and edx, 0xffff
add eax, edx
sar eax, 0x10
add eax, 0x20
cmp eax, 0x30
jle 0x450fe9
mov eax, 0x30
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
push 0x4099
push eax
push 0x32
push ecx
push edx
call fcn.00452de0
add esp, 0x14
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
test al, 0xf
jne 0x451059
mov dword [esi + 0x1c], ebp
mov ecx, dword [esi + 0x14]
mov eax, ecx
shl eax, 5
sub eax, ecx
mov ecx, 0xe
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x150]
cmp eax, ecx
jge 0x45139f
dec eax
cmp eax, ebp
mov dword [esi + 0x150], eax
jg 0x45139f
mov dword [esi + 0x150], ecx
mov cl, byte [esi + 0x45]
neg cl
mov byte [esi + 0x45], cl
jmp 0x45139f
shl eax, 0x1c
test eax, eax
jle 0x451098
mov eax, dword [esi + 0x150]
mov ecx, 0xe
cmp eax, ecx
mov dword [esi + 0x1c], 0x2000
jge 0x45108b
dec eax
cmp eax, ebp
mov dword [esi + 0x150], eax
jg 0x45108b
mov dword [esi + 0x150], ecx
mov byte [esi + 0x45], 1
mov al, byte [esi + 0x45]
test al, al
jge 0x45139f
jmp 0x4510ce
mov eax, dword [esi + 0x150]
mov ecx, 0xe
cmp eax, ecx
mov dword [esi + 0x1c], 0xffffe000
jge 0x4510c3
dec eax
cmp eax, ebp
mov dword [esi + 0x150], eax
jg 0x4510c3
mov dword [esi + 0x150], ecx
mov byte [esi + 0x45], 0xff
mov al, byte [esi + 0x45]
test al, al
jle 0x45139f
cmp dword [esi + 0x150], ecx
jne 0x45139f
mov dword [esi + 0x150], 0xd
jmp 0x45139f
cmp eax, 1
jle 0x4511e6
shl eax, 7
mov ecx, dword [eax + 0x521f40]
cmp ecx, 0x411fd0
jne 0x45116b
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
test al, 0xf
jne 0x45112b
mov dword [esi + 0x1c], ebp
mov ecx, dword [esi + 0x14]
mov eax, ecx
shl eax, 3
sub eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [esi + 0x14], eax
jmp 0x45139f
shl eax, 0x1c
test eax, eax
jle 0x45114c
mov dword [esi + 0x1c], 0x1000
mov eax, dword [esi + 0x14]
cmp eax, edi
jle 0x45139f
mov dword [esi + 0x14], edi
jmp 0x45139f
mov dword [esi + 0x1c], 0xfffff000
mov ecx, dword [esi + 0x14]
mov eax, 0xfffc0000
cmp ecx, eax
jle 0x45139f
mov dword [esi + 0x14], eax
jmp 0x45139f
cmp ecx, 0x409a50
jne 0x45139f
cmp dword [esi + 0xf4], ebp
jne 0x451190
mov byte [eax + 0x521f81], bl
mov dword [esi + 0x88], ebp
jmp 0x45139f
mov eax, dword [eax + 0x521f4c]
mov ecx, dword [esi + 0xc]
sub eax, ecx
mov ecx, 0x280000
mov dword [esi + 0x14], eax
mov edx, dword [esi + 0x88]
mov eax, dword [esi + 0x10]
shl edx, 7
sub ecx, eax
mov eax, dword [edx + 0x521f50]
add eax, ecx
cmp eax, ebp
mov dword [esi + 0x18], eax
jle 0x4511d3
add eax, 0xffffa000
mov dword [esi + 0x20], ebp
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], ebp
jmp 0x45139f
add eax, 0xffffe000
mov dword [esi + 0x20], ebp
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], ebp
jmp 0x45139f
cmp dword [esi + 0x500], ebp
je 0x4512a0
mov eax, dword [esp + 0x18]
mov dword [esi + 0xc0], 0x32
mov dword [esi + 0x74], ebp
mov dword [esi + 0x78], ebp
mov dword [esi + 0x120], ebp
mov eax, dword [eax]
test al, 0xf
jne 0x451230
mov dword [esi + 0x1c], ebp
mov ecx, dword [esi + 0x14]
mov eax, ecx
shl eax, 5
sub eax, ecx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
mov dword [esi + 0x14], eax
jmp 0x45139f
shl eax, 0x1c
test eax, eax
jle 0x451268
mov eax, dword [esi + 0x70]
mov dword [esi + 0x1c], 0x1000
cmp eax, ebp
mov eax, dword [esi + 0x14]
je 0x451258
cmp eax, edi
jle 0x45139f
mov dword [esi + 0x14], edi
jmp 0x45139f
cmp eax, edx
jle 0x45139f
mov dword [esi + 0x14], edx
jmp 0x45139f
mov eax, dword [esi + 0x70]
mov dword [esi + 0x1c], 0xfffff000
cmp eax, ebp
mov eax, dword [esi + 0x14]
je 0x451290
cmp eax, 0xfffc0000
jge 0x45139f
mov dword [esi + 0x14], 0xfffc0000
jmp 0x45139f
cmp eax, ecx
jge 0x45139f
mov dword [esi + 0x14], ecx
jmp 0x45139f
cmp dword [esi + 0x74], ebp
jl 0x45139f
cmp dword [esi + 0x184], ebp
jne 0x45139f
mov ecx, dword [esp + 0x18]
test byte [ecx], 0xf
je 0x4512c1
mov dword [esi + 0x74], ebp
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
test al, 0xf
jne 0x451346
mov eax, dword [esi + 0x98]
mov dword [esi + 0x1c], ebp
cmp eax, ebp
je 0x4512e0
mov dword [esi + 0x14], ebp
jmp 0x45139f
mov eax, dword [esi + 0x14]
cmp eax, ebp
jle 0x451314
cmp dword [esi + 0x70], ebp
je 0x451300
cmp eax, 0x6d60
jle 0x451341
add eax, 0xffff92a0
mov dword [esi + 0x14], eax
jmp 0x45139f
cmp eax, 0x1f40
jle 0x451341
add eax, 0xffffe0c0
mov dword [esi + 0x14], eax
jmp 0x45139f
jge 0x45139f
cmp dword [esi + 0x70], ebp
je 0x451330
cmp eax, 0xffff92a0
jge 0x451341
add eax, 0x6d60
mov dword [esi + 0x14], eax
jmp 0x45139f
cmp eax, 0xffffe0c0
jge 0x451341
add eax, 0x1f40
mov dword [esi + 0x14], eax
jmp 0x45139f
mov dword [esi + 0x14], ebp
jmp 0x45139f
cmp dword [esi + 0x70], ebp
je 0x451376
shl eax, 0x1c
jns 0x451361
cmp dword [esi + 0x198], ebp
jne 0x451361
mov dword [esi + 0x1c], 0xffffa240
jmp 0x45139f
cmp eax, ebp
jle 0x45139f
cmp dword [esi + 0x198], ebp
jne 0x45139f
mov dword [esi + 0x1c], 0x5dc0
jmp 0x45139f
shl eax, 0x1c
jns 0x45138c
cmp dword [esi + 0x198], ebp
jne 0x45138c
mov dword [esi + 0x1c], 0xffffd120
jmp 0x45139f
cmp eax, ebp
jle 0x45139f
cmp dword [esi + 0x198], ebp
jne 0x45139f
mov dword [esi + 0x1c], 0x2ee0
mov eax, dword [esi + 0x150]
mov edx, dword [esp + 0x18]
cmp eax, ebp
jne 0x4513c2
mov eax, dword [edx]
shl eax, 0x1c
jns 0x4513ba
mov byte [esi + 0x45], 0xff
jmp 0x4513c2
cmp eax, ebp
jle 0x4513c2
mov byte [esi + 0x45], 1
mov ecx, dword [esi + 0xc4]
mov eax, dword [esi + 0x198]
inc ecx
cmp eax, ebp
mov dword [esi + 0xc4], ecx
jne 0x451d77
cmp dword [0x574b64], ebp
jne 0x451d77
cmp dword [esi + 0xe0], ebp
jg 0x451d77
mov ecx, dword [esi + 0x98]
mov eax, 0x78
cmp ecx, ebp
jne 0x451436
cmp dword [esi + 0x9c], ebp
jne 0x451436
cmp dword [esi + 0xf8], ebp
je 0x451440
mov edi, dword [edx]
and edi, 0xfffffff0
shl edi, 0x18
test edi, edi
jle 0x451440
cmp dword [esi + 0xc0], eax
jl 0x451440
mov dword [esi + 0xc0], ebp
mov dword [esi + 0x84], ebp
jmp 0x451440
mov dword [esi + 0xc0], 0x32
mov edi, dword [edx]
and edi, 0xfffffff0
shl edi, 0x18
test edi, edi
jg 0x451463
cmp dword [esi + 0xf8], ebp
je 0x451463
cmp dword [esi + 0xc0], 0x32
jl 0x451463
mov dword [esi + 0xc0], eax
mov eax, dword [esi + 0xc0]
cmp eax, 0x28
jle 0x451473
cmp eax, 0x32
jl 0x45147a
inc eax
mov dword [esi + 0xc0], eax
cmp dword [esi + 0xc0], 0x32
jge 0x45148c
mov dword [esi + 0xc4], ebp
mov dword [esi + 0x7c], ebp
mov eax, dword [edx]
test ah, 0x10
je 0x4514aa
mov ebx, dword [esi + 0x70]
mov eax, 0x20
inc ebx
mov edi, ebx
mov dword [esi + 0x70], ebx
cmp edi, eax
jle 0x4514be
mov dword [esi + 0x70], eax
jmp 0x4514be
mov eax, dword [esi + 0x70]
cmp eax, ebp
jle 0x4514be
add eax, 0xfffffffe
cmp eax, ebp
mov dword [esi + 0x70], eax
jge 0x4514be
mov dword [esi + 0x70], ebp
mov eax, dword [edx]
test ah, 0x10
mov eax, dword [esi + 0x78]
je 0x4514e3
cmp eax, 2
jle 0x4514de
cmp eax, 0xf
jge 0x4514de
cmp dword [esi + 0x74], ebp
jne 0x4514de
mov dword [esi + 0x74], 1
mov dword [esi + 0x78], ebp
jmp 0x4514e7
inc eax
mov dword [esi + 0x78], eax
cmp dword [esi + 0x14], ebp
jne 0x4515b9
cmp dword [esi + 0x1c], ebp
jne 0x4515b9
cmp dword [esi + 0x18], ebp
jne 0x4515b9
cmp ecx, ebp
jne 0x4515b9
mov ecx, dword [esi + 0x74]
cmp ecx, ebp
jle 0x45153f
mov eax, dword [esi + 0x78]
cmp eax, ebp
jle 0x45153f
cmp eax, 0xf
jge 0x45153f
test cl, 3
je 0x45153a
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
push ebp
push 0x14
push 0x83
push eax
push ecx
call fcn.00452de0
add esp, 0x14
inc dword [esi + 0x74]
jmp 0x4515b9
mov eax, dword [esi + 0x78]
cmp eax, 0xf
jle 0x4515b9
cmp ecx, 0x14
jle 0x4515b1
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0xc]
push ebp
push ebp
push 0xb
push edx
push eax
call fcn.00452de0
mov ecx, dword [esi + 0x74]
mov eax, 0x50
add esp, 0x14
cmp ecx, eax
jle 0x45156f
mov dword [esi + 0x74], eax
mov ecx, dword [esi + 0x74]
movsx edx, byte [esi + 0x45]
mov eax, ecx
imul eax, edx
shl eax, 0x10
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [esi + 0x14], eax
mov eax, ecx
movsx edx, byte [esi + 0x45]
imul eax, edx
shl eax, 0xb
cdq
and edx, 0xf
add eax, edx
sar eax, 4
mov dword [esi + 0x1c], eax
mov eax, 0xffffff06
sub eax, ecx
shl eax, 2
mov dword [esi + 0x74], eax
jmp 0x4515b9
cmp eax, 0xf
jle 0x4515b9
mov dword [esi + 0x74], ebp
mov eax, dword [esi + 0x9c]
mov ebx, dword [esp + 0x18]
cmp eax, ebp
mov edi, 0xfff80000
je 0x45162b
mov ecx, dword [ebx]
test ch, 0xa
je 0x45162b
shl eax, 7
mov byte [eax + 0x522001], 1
mov ecx, dword [esi + 0x9c]
shl ecx, 7
mov dword [ecx + 0x521fe4], 0x23
mov eax, dword [ebx]
test ah, 8
je 0x451606
mov ecx, dword [esi + 0x18]
add ecx, edi
mov dword [esi + 0x18], ecx
mov eax, dword [ebx]
and ah, 0xf7
mov dword [ebx], eax
mov eax, dword [ebx]
test ah, 2
je 0x451620
mov ecx, dword [esi + 0x18]
add ecx, 0xffff0000
mov dword [esi + 0x18], ecx
mov eax, dword [ebx]
and ah, 0xfd
mov dword [ebx], eax
mov dword [esi + 0x9c], ebp
jmp 0x451721
mov eax, dword [ebx]
test ah, 2
je 0x451702
cmp dword [esi + 0xc0], 0x32
jl 0x451702
cmp dword [esi + 0x14], ebp
jne 0x451671
cmp dword [esi + 0x18], ebp
jne 0x451671
cmp dword [esi + 0x118], ebp
jge 0x451671
cmp dword [esi + 0x144], ebp
jne 0x451665
cmp dword [esi + 0x4b4], ebp
jg 0x451671
mov dword [esi + 0x148], 8
jmp 0x451677
mov dword [esi + 0x148], ebp
mov eax, dword [esi + 0x144]
cmp eax, ebp
jne 0x4516a8
cmp dword [esi + 0x4b4], ebp
jle 0x4516a8
cmp dword [esi + 0x140], 8
jl 0x4516a8
mov dword [esi + 0x134], 1
mov dword [esi + 0x140], 0xffffffff
jmp 0x451721
cmp eax, 3
je 0x4516dd
cmp eax, 4
je 0x4516dd
cmp eax, 6
je 0x4516dd
mov edx, dword [esi + 0x140]
mov eax, dword [esi + 0x138]
cmp edx, eax
jl 0x451721
mov dword [esi + 0x134], 1
mov dword [esi + 0x140], 0xffffffff
jmp 0x451721
cmp dword [esi + 0x13c], ebp
jne 0x451721
mov eax, 1
mov dword [esi + 0x134], eax
mov dword [esi + 0x140], 0xffffffff
mov dword [esi + 0x13c], eax
jmp 0x451721
mov eax, dword [esi + 0x138]
mov ecx, dword [esi + 0x140]
add eax, 0xfffffffb
mov dword [esi + 0x13c], ebp
cmp ecx, eax
jge 0x451721
mov dword [esi + 0x140], eax
mov ecx, dword [esi + 0x140]
inc ecx
mov dword [esi + 0x140], ecx
mov eax, dword [ebx]
test ah, 4
je 0x451772
cmp dword [esi + 0x170], ebp
jne 0x451778
xor ecx, ecx
mov eax, dword [esi + 0x144]
mov ebx, 0xa
inc eax
cdq
idiv ebx
mov dword [esi + 0x144], edx
cmp dword [esi + edx*4 + 0x444], ebp
jg 0x451762
inc ecx
cmp ecx, ebx
jl 0x45173f
mov ebx, dword [esp + 0x18]
mov dword [esi + 0x170], 1
jmp 0x451778
mov dword [esi + 0x170], ebp
mov eax, dword [ebx]
test ah, 8
je 0x451a39
cmp dword [esi + 0x500], ebp
je 0x4517df
mov ecx, dword [0x574b44]
mov eax, dword [esi + 0x10]
add ecx, 0x200000
cmp eax, ecx
jge 0x451a83
mov edx, dword [esi + 0xc]
push ebp
push 0x28
push 0x6b
push eax
push edx
call fcn.00452de0
mov eax, dword [esi + 0xbc]
add esp, 0x14
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x10]
add eax, 0xfffc0000
mov dword [esi + 0x500], ebp
mov dword [esi + 0x10], eax
mov dword [esi + 0xc8], ebp
mov dword [esi + 0xb4], ebp
jmp 0x451a83
mov ecx, dword [esi + 0x88]
cmp ecx, 1
jle 0x4517f5
mov dword [esi + 0xb0], ebp
jmp 0x451a83
mov edx, dword [esi + 0x18]
cmp edx, ebp
jle 0x451878
mov eax, dword [esi + 0xb0]
cmp eax, 5
jl 0x451878
cmp eax, 0x1e
jge 0x451878
cmp dword [esi + 0x4c0], 0x4b
jne 0x45185f
cmp dword [esi + 0xb4], ebp
jne 0x451a83
mov dword [esi + 0x14], ebp
mov dword [esi + 0x18], edi
mov edx, dword [esi + 0x10]
push ebp
add edx, 0xfffc0000
push ebp
mov dword [esi + 0x10], edx
mov edx, dword [esi + 0xc]
mov dword [esi + 0xc8], ebp
mov ecx, dword [esi + 0x10]
push 0x9f
push ecx
push edx
mov dword [esi + 0xb4], 1
call fcn.00452de0
add esp, 0x14
jmp 0x451a83
mov dword [esi + 0x84], 0x46
mov dword [esi + 0xb0], 0x1e
jmp 0x451a83
cmp ecx, ebp
jne 0x451a83
cmp dword [esi + 0xf8], ebp
jne 0x4519da
mov eax, dword [esi + 0x190]
mov dword [esi + 0xb4], ebp
cmp eax, 0x4000
jl 0x451969
lea ecx, [eax - 0x4000]
mov eax, ecx
shl eax, 5
sub eax, ecx
lea eax, [eax + eax*2]
lea ecx, [ecx + eax*4]
mov dword [ecx*4 + 0x54b6f8], 0xfff00000
mov eax, dword [esi + 0x190]
sub eax, 0x4000
mov ecx, eax
shl ecx, 5
sub ecx, eax
lea edx, [ecx + ecx*2]
lea eax, [eax + edx*4]
mov edx, dword [eax*4 + 0x54b6f0]
add edx, 0xfffc0000
mov dword [eax*4 + 0x54b6f0], edx
mov eax, dword [esp + 0x14]
lea edx, [eax + 0x4000]
mov eax, dword [esi + 0x190]
sub eax, 0x4000
mov ecx, eax
shl ecx, 5
sub ecx, eax
lea ecx, [ecx + ecx*2]
lea eax, [eax + ecx*4]
mov dword [eax*4 + 0x54b7a8], edx
mov eax, dword [esi + 0x190]
sub eax, 0x4000
mov ecx, eax
shl ecx, 5
sub ecx, eax
lea ecx, [ecx + ecx*2]
lea edx, [eax + ecx*4]
mov dword [edx*4 + 0x54b800], ebp
mov eax, dword [esi + 0x190]
sub eax, 0x4000
mov ecx, eax
shl ecx, 5
sub ecx, eax
lea ecx, [ecx + ecx*2]
lea edx, [eax + ecx*4]
mov dword [edx*4 + 0x54b854], ebp
mov dword [esi + 0x190], 0x28
mov dword [esi + 0xb0], ebp
jmp 0x451a83
cmp dword [esi + 0x7c], 4
jle 0x451997
cmp dword [esi + 0x14], ebp
jne 0x451997
cmp dword [esi + 0xb8], ebp
jne 0x4519c9
mov dword [esi + 0xb8], 1
mov dword [esi + 0xc8], ebp
mov dword [esi + 0xb0], ebp
jmp 0x451a83
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
push ebp
push 0x28
push 0x6b
push eax
push ecx
call fcn.00452de0
mov eax, dword [esi + 0x14]
add esp, 0x14
cmp eax, ebp
jg 0x4519b5
neg eax
cdq
and edx, 3
add eax, edx
mov edx, dword [esi + 0xbc]
sar eax, 2
sub edx, eax
mov dword [esi + 0x18], edx
mov dword [esi + 0xc8], ebp
mov dword [esi + 0xb0], ebp
jmp 0x451a83
mov eax, dword [esi + 0x98]
cmp eax, 2
jne 0x4519f4
cmp edx, ebp
jne 0x451a31
cmp dword [esi + 0xb0], 8
jle 0x451a31
jmp 0x4519fc
cmp eax, ebp
je 0x451a31
cmp edx, ebp
jne 0x451a31
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
push ebp
push 0x28
push 0x6b
push eax
push ecx
call fcn.00452de0
mov edx, dword [esi + 0xbc]
add esp, 0x14
mov dword [esi + 0x18], edx
mov eax, dword [esi + 0x10]
add eax, 0xfffc0000
mov dword [esi + 0xb4], ebp
mov dword [esi + 0x10], eax
mov dword [esi + 0xc8], ebp
mov dword [esi + 0xb0], ebp
jmp 0x451a83
cmp dword [esi + 0xc8], ebp
jne 0x451a7d
cmp dword [esi + 0x180], ebp
jne 0x451a7d
cmp dword [esi + 0x500], ebp
jne 0x451a7d
mov eax, dword [esi + 0x18]
cmp eax, 0xffff0000
jge 0x451a65
add eax, 0x8000
mov dword [esi + 0x18], eax
jmp 0x451a7d
cmp eax, 0xffffc000
jge 0x451a76
add eax, 0x4000
mov dword [esi + 0x18], eax
jmp 0x451a7d
cmp eax, ebp
jge 0x451a7d
mov dword [esi + 0x18], ebp
inc dword [esi + 0xb0]
cmp dword [esi + 0x500], ebp
je 0x451b27
mov eax, dword [ebx]
test al, 0xf0
jne 0x451ab0
mov ecx, dword [esi + 0x18]
mov eax, 0x20000
cmp ecx, eax
mov dword [esi + 0x20], ebp
jle 0x451d0d
mov dword [esi + 0x18], eax
jmp 0x451d0d
cmp dword [esi + 0x70], ebp
je 0x451aee
shl eax, 0x18
sar eax, 0x1c
shl eax, 0xe
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x18]
cmp eax, 0xfffc0000
jge 0x451ad7
mov dword [esi + 0x18], 0xfffc0000
jmp 0x451d0d
cmp eax, 0x40000
jle 0x451d0d
mov dword [esi + 0x18], 0x40000
jmp 0x451d0d
shl eax, 0x18
sar eax, 0x1c
shl eax, 0xd
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x18]
cmp eax, 0xfffe0000
jge 0x451b10
mov dword [esi + 0x18], 0xfffe0000
jmp 0x451d0d
cmp eax, 0x20000
jle 0x451d0d
mov dword [esi + 0x18], 0x20000
jmp 0x451d0d
mov eax, dword [esi + 0x88]
cmp eax, ebp
je 0x451cab
cmp eax, 0xffffffff
jne 0x451c2d
mov eax, dword [ebx]
test al, 0xf0
jne 0x451b6d
mov ecx, dword [esi + 0x18]
mov eax, 0x10000
cmp ecx, eax
mov dword [esi + 0x20], 0xffffe400
jle 0x451c9f
mov dword [esi + 0x18], eax
mov dword [esi + 0xc0], 0x32
jmp 0x451d0d
cmp dword [esi + 0x70], ebp
je 0x451bd1
mov ecx, dword [esi + 0x18]
shl eax, 0x18
sar eax, 0x1c
lea eax, [eax + eax*2]
shl eax, 0xe
cmp ecx, ebp
mov dword [esi + 0x20], eax
jge 0x451b90
add eax, 0xffffc000
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x18]
cmp eax, 0xfffc0000
jge 0x451bb0
mov dword [esi + 0x18], 0xfffc0000
mov dword [esi + 0xc0], 0x32
jmp 0x451d0d
cmp eax, 0x40000
jle 0x451c9f
mov dword [esi + 0x18], 0x40000
mov dword [esi + 0xc0], 0x32
jmp 0x451d0d
mov ecx, dword [esi + 0x18]
shl eax, 0x18
sar eax, 0x1c
shl eax, 0xf
cmp ecx, ebp
mov dword [esi + 0x20], eax
jge 0x451bec
add eax, 0xffffc000
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x18]
cmp eax, 0xfffe0000
jge 0x451c0c
mov dword [esi + 0x18], 0xfffe0000
mov dword [esi + 0xc0], 0x32
jmp 0x451d0d
cmp eax, 0x20000
jle 0x451c9f
mov dword [esi + 0x18], 0x20000
mov dword [esi + 0xc0], 0x32
jmp 0x451d0d
cmp eax, 1
jge 0x451c58
mov eax, dword [esi + 0x154]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
push eax
push 0x7d00
push 0x19
push 0x5c
push ecx
push edx
call fcn.00452ed0
add esp, 0x18
mov dword [esi + 0x154], eax
test byte [ebx], 0xf0
jne 0x451c72
cmp dword [esi + 0x18], ebp
jge 0x451c6b
mov dword [esi + 0x20], 0xffffe000
jmp 0x451c72
mov dword [esi + 0x20], 0xfffff000
mov eax, dword [ebx]
test al, 0xf0
je 0x451c9f
cmp dword [esi + 0x70], ebp
je 0x451c88
shl eax, 0x18
sar eax, 0x1c
shl eax, 0x11
jmp 0x451c91
shl eax, 0x18
sar eax, 0x1c
shl eax, 0x10
cmp eax, ebp
mov dword [esi + 0x18], eax
jge 0x451c9f
add dword [esi + 0x20], 0xffffc000
mov dword [esi + 0xc0], 0x32
jmp 0x451d0d
mov eax, dword [esi + 0x84]
cmp eax, ebp
jle 0x451d0a
mov ecx, dword [esi + 0x10]
dec eax
mov edx, dword [esi + 0xc]
mov dword [esi + 0x84], eax
mov eax, dword [esi + 0x154]
push eax
push 0x7d00
push 0x19
push 0x5c
push ecx
push edx
call fcn.00452ed0
mov dword [esi + 0x154], eax
mov eax, dword [esi + 0x18]
add esp, 0x18
cmp eax, ebp
jge 0x451cf2
mov dword [esi + 0x20], 0x6000
jmp 0x451cf9
mov dword [esi + 0x20], 0x200
mov ecx, dword [esi + 0x18]
mov eax, 0x10000
cmp ecx, eax
jle 0x451d0d
mov dword [esi + 0x18], eax
jmp 0x451d0d
mov dword [esi + 0x20], ebp
mov eax, dword [ebx]
and al, 0xf0
shl eax, 0x18
test eax, eax
jle 0x451d27
cmp dword [esi + 0x98], ebp
je 0x451d27
mov dword [esi + 0x18], 0x40000
mov eax, dword [ebx]
test ah, 0xe
jne 0x451d4a
mov ecx, eax
and ecx, 0x1000
cmp ecx, 0x1000
je 0x451d4a
test al, 0xff
jne 0x451d4a
inc dword [esi + 0x120]
jmp 0x451d56
mov dword [esi + 0x174], ebp
mov dword [esi + 0x120], ebp
mov edx, dword [ebx]
shl edx, 0x1c
sar edx, 0x1c
mov dword [esi + 0x11c], edx
mov eax, dword [ebx]
shl eax, 0x18
sar eax, 0x1c
mov dword [esi + 0x118], eax
pop edi
pop esi
pop ebp
pop ebx
ret
mov edi, dword [esi + 0x78]
mov dword [esi + 0xc0], 0x32
mov edx, dword [esi + 0x140]
inc edi
inc edx
mov dword [esi + 0x78], edi
mov dword [esi + 0x140], edx
mov dword [esi + 0x134], ebp
mov dword [esi + 0xc8], ebp
mov eax, dword [esi + 0x88]
cmp eax, 1
mov dword [esi + 0x74], ebp
jle 0x451dca
shl eax, 7
cmp dword [eax + 0x521f40], 0x411fd0
jne 0x451dc4
mov byte [eax + 0x521f81], bl
mov dword [esi + 0x88], ebp
mov eax, dword [esi + 0x70]
mov dword [esi + 0x120], ebp
cmp eax, ebp
mov dword [esi + 0x11c], ebp
mov dword [esi + 0x118], ebp
jle 0x451df0
add eax, 0xfffffffc
cmp eax, ebp
mov dword [esi + 0x70], eax
jge 0x451df0
mov dword [esi + 0x70], ebp
pop edi
pop esi
pop ebp
pop ebx
ret