Function at 0x5089a0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x84
mov edx, dword [esp + 0x88]
push ebx
push ebp
push esi
mov eax, dword [edx + 0x34]
mov ebp, dword [edx + 0x2c]
mov dword [esp + 0x4c], eax
movzx eax, byte [edx + 0x3c]
mov dword [esp + 0x68], eax
movzx eax, byte [edx + 0x3d]
movzx ebx, byte [ebp + 9]
mov dword [esp + 0x6c], eax
movzx eax, byte [edx + 0x3e]
mov dword [esp + 0x70], eax
movzx eax, byte [edx + 0x3f]
mov dword [esp + 0x74], eax
mov eax, dword [edx + 0x28]
push edi
mov edi, dword [edx + 0x38]
mov dword [esp + 0x1c], eax
movzx ecx, byte [eax + 9]
mov dword [esp + 0x68], ecx
mov ecx, dword [eax + 0x18]
mov esi, ecx
not esi
mov dword [esp + 0x2c], ebp
and edi, esi
mov dword [esp + 0x80], esi
cmp dword [eax], 0x16372004
mov esi, dword [edx + 0x14]
mov edx, dword [edx + 0x20]
mov dword [esp + 0x54], ebx
mov dword [esp + 0x84], edi
mov dword [esp + 0x60], esi
mov dword [esp + 0x90], edx
jne 0x508a33
mov dword [esp + 0x64], 1
jmp 0x508a3e
neg ecx
sbb ecx, ecx
neg ecx
dec ecx
mov dword [esp + 0x64], ecx
cmp dword [ebp], 0x16372004
jne 0x508a51
mov dword [esp + 0x58], 1
jmp 0x508a5f
mov edi, dword [ebp + 0x18]
neg edi
sbb edi, edi
neg edi
dec edi
mov dword [esp + 0x58], edi
cmp dword [esp + 0xb0], 0
mov dword [esp + 0x7c], 0
jle 0x5097a3
mov ecx, dword [esp + 0xac]
nop dword [eax]
mov eax, dword [esp + 0xec]
cdq
mov dword [esp + 0x5c], 0
mov ebp, eax
mov eax, dword [esp + 0xf0]
mov esi, edx
cdq
mov dword [esp + 0x40], edx
mov edi, eax
mov eax, dword [esp + 0xf4]
cdq
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], esi
mov dword [esp + 0x44], edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
test ecx, ecx
jle 0x509758
mov eax, dword [esp + 0xb8]
cdq
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
nop dword [eax]
mov ecx, eax
mov eax, edx
add ecx, ebp
adc eax, esi
test eax, eax
jl case.default.0x5095e3
jg 0x508afa
test ecx, ecx
jb case.default.0x5095e3
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x40]
cdq
add eax, edi
adc edx, ecx
test edx, edx
jl case.default.0x5095e3
jg 0x508b1c
test eax, eax
jb case.default.0x5095e3
mov eax, dword [esp + 0xc0]
cdq
add eax, dword [esp + 0x48]
adc edx, dword [esp + 0x4c]
test edx, edx
jl case.default.0x5095e3
jg 0x508b3e
test eax, eax
jb case.default.0x5095e3
mov eax, dword [esp + 0x5c]
imul eax, ebx
push ecx
push edi
add eax, dword [esp + 0x68]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xbc]
cdq
mov ebp, eax
mov ebx, edx
mov eax, dword [esp + 0xf0]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x3c]
mov edi, eax
mov esi, edx
push dword [esp + 0x3c]
mov eax, dword [esp + 0xec]
cdq
push edx
push eax
call fcn.0050cf40
add edi, eax
mov eax, dword [esp + 0xa0]
push ebx
adc esi, edx
cdq
add edi, eax
push ebp
adc esi, edx
push esi
push edi
call fcn.0050d020
mov ecx, dword [esp + 0x98]
push dword [esp + 0x40]
push dword [esp + 0x48]
imul eax, dword [ecx + 0xc]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xe8]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x3c]
mov edi, eax
mov esi, edx
push dword [esp + 0x3c]
mov eax, dword [esp + 0xe4]
cdq
push edx
push eax
call fcn.0050cf40
add edi, eax
mov eax, dword [esp + 0x9c]
push ebx
adc esi, edx
cdq
add edi, eax
push ebp
adc esi, edx
push esi
push edi
call fcn.0050d020
mov edx, dword [esp + 0x68]
mov ecx, dword [esp + 0x34]
imul eax, edx
add ecx, eax
mov eax, dword [esp + 0x98]
add ecx, dword [eax]
mov eax, dword [esp + 0x64]
test eax, eax
jne 0x508cf6
lea eax, [edx - 1]
cmp eax, 3
ja case.default.0x508c26
jmp dword [eax*4 + 0x5097b0]
movzx esi, byte [ecx]
mov ebx, dword [esp + 0x1c]
movzx eax, byte [ebx + 0x1c]
mov edx, dword [ebx + 0xc]
movzx ecx, byte [ebx + 0x20]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ecx, byte [ebx + 0x21]
movzx edi, byte [edx + eax]
movzx eax, byte [ebx + 0x1d]
mov edx, dword [ebx + 0x10]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ecx, byte [ebx + 0x22]
movzx ebp, byte [edx + eax]
movzx eax, byte [ebx + 0x1e]
mov edx, dword [ebx + 0x14]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ebx, byte [edx + eax]
mov eax, dword [esp + 0x1c]
mov edx, dword [eax + 0x18]
movzx ecx, byte [eax + 0x23]
and edx, esi
movzx eax, byte [eax + 0x1f]
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx eax, byte [edx + eax]
jmp 0x508df0
movzx esi, word [ecx]
jmp 0x508c30
mov edx, dword [esp + 0x1c]
xor esi, esi
mov dword [esp + 0x28], 0xff
movzx eax, byte [edx + 0x20]
shr eax, 3
movzx edi, byte [eax + ecx]
movzx eax, byte [edx + 0x21]
shr eax, 3
movzx ebp, byte [eax + ecx]
movzx eax, byte [edx + 0x22]
shr eax, 3
movzx ebx, byte [eax + ecx]
jmp 0x508df8
mov esi, dword [ecx]
jmp 0x508c30
xor esi, esi
xor ebx, ebx
xor ebp, ebp
mov dword [esp + 0x28], esi
xor edi, edi
jmp 0x508df4
jns 0x508dc8
lea eax, [edx - 1]
cmp eax, 3
ja case.default.0x508d08
jmp dword [eax*4 + 0x5097c0]
movzx esi, byte [ecx]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x28], 0xff
movzx eax, byte [ebx + 0x1c]
mov edx, dword [ebx + 0xc]
movzx ecx, byte [ebx + 0x20]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ecx, byte [ebx + 0x21]
movzx edi, byte [edx + eax]
movzx eax, byte [ebx + 0x1d]
mov edx, dword [ebx + 0x10]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ecx, byte [ebx + 0x22]
movzx ebp, byte [edx + eax]
movzx eax, byte [ebx + 0x1e]
mov edx, dword [ebx + 0x14]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ebx, byte [edx + eax]
mov edx, dword [esp + 0x1c]
jmp 0x508df8
movzx esi, word [ecx]
jmp 0x508d12
mov edx, dword [esp + 0x1c]
xor esi, esi
mov dword [esp + 0x28], 0xff
movzx eax, byte [edx + 0x20]
shr eax, 3
movzx edi, byte [eax + ecx]
movzx eax, byte [edx + 0x21]
shr eax, 3
movzx ebp, byte [eax + ecx]
movzx eax, byte [edx + 0x22]
shr eax, 3
movzx ebx, byte [eax + ecx]
jmp 0x508df8
mov esi, dword [ecx]
jmp 0x508d12
mov edx, dword [esp + 0x1c]
xor esi, esi
xor ebx, ebx
mov dword [esp + 0x28], 0xff
xor ebp, ebp
xor edi, edi
jmp 0x508df8
mov esi, dword [ecx]
mov eax, esi
shr eax, 0x16
mov ecx, esi
movzx edi, al
mov eax, esi
shr eax, 0xc
movzx ebp, al
mov eax, esi
shr eax, 2
movzx ebx, al
mov eax, dword [0x567f18]
shr ecx, 0x1e
movzx eax, byte [ecx + eax]
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], ebp
mov dword [esp + 0x24], ebx
test eax, 0x100
je 0x508e4a
cmp dword [esp + 0x68], 3
jne 0x508e36
movzx ecx, byte [edx + 0x22]
mov esi, ebx
shl esi, cl
mov eax, ebp
movzx ecx, byte [edx + 0x21]
shl eax, cl
movzx ecx, byte [edx + 0x20]
or esi, eax
mov eax, edi
shl eax, cl
or esi, eax
mov eax, dword [esp + 0x50]
and esi, dword [esp + 0x80]
cmp esi, dword [esp + 0x84]
je 0x509722
test al, 0xf0
je case.default.0x508e6c
mov eax, dword [esp + 0x58]
test eax, eax
jne 0x508f44
mov eax, dword [esp + 0x54]
dec eax
cmp eax, 3
ja case.default.0x508e6c
jmp dword [eax*4 + 0x5097d0]
mov eax, dword [esp + 0x20]
movzx esi, byte [eax]
mov edi, dword [esp + 0x2c]
movzx eax, byte [edi + 0x1c]
mov edx, dword [edi + 0xc]
movzx ecx, byte [edi + 0x20]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ecx, byte [edi + 0x21]
movzx ebp, byte [edx + eax]
movzx eax, byte [edi + 0x1d]
mov edx, dword [edi + 0x10]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ecx, byte [edi + 0x22]
movzx ebx, byte [edx + eax]
movzx eax, byte [edi + 0x1e]
mov edx, dword [edi + 0x14]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ecx, byte [edi + 0x23]
movzx eax, byte [edx + eax]
mov edx, dword [edi + 0x18]
mov dword [esp + 0x14], eax
and edx, esi
movzx eax, byte [edi + 0x1f]
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx eax, byte [edx + eax]
mov dword [esp + 0x10], eax
jmp 0x50906a
mov eax, dword [esp + 0x20]
movzx esi, word [eax]
jmp 0x508e7a
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x10], 0xff
movzx eax, byte [ecx + 0x20]
shr eax, 3
movzx ebp, byte [eax + edx]
movzx eax, byte [ecx + 0x21]
shr eax, 3
movzx ebx, byte [eax + edx]
movzx eax, byte [ecx + 0x22]
shr eax, 3
movzx eax, byte [eax + edx]
mov dword [esp + 0x14], eax
jmp 0x50906a
mov eax, dword [esp + 0x20]
mov esi, dword [eax]
jmp 0x508e7a
jns 0x50902a
mov eax, dword [esp + 0x54]
dec eax
cmp eax, 3
ja case.default.0x508f58
jmp dword [eax*4 + 0x5097e0]
mov eax, dword [esp + 0x20]
movzx esi, byte [eax]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x10], 0xff
movzx eax, byte [edi + 0x1c]
mov edx, dword [edi + 0xc]
movzx ecx, byte [edi + 0x20]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ecx, byte [edi + 0x21]
movzx ebp, byte [edx + eax]
movzx eax, byte [edi + 0x1d]
mov edx, dword [edi + 0x10]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx ecx, byte [edi + 0x22]
movzx ebx, byte [edx + eax]
movzx eax, byte [edi + 0x1e]
mov edx, dword [edi + 0x14]
and edx, esi
shr edx, cl
mov eax, dword [eax*4 + 0x567f00]
movzx eax, byte [edx + eax]
mov dword [esp + 0x14], eax
jmp 0x50906a
mov eax, dword [esp + 0x20]
movzx esi, word [eax]
jmp 0x508f66
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x10], 0xff
movzx eax, byte [ecx + 0x20]
shr eax, 3
movzx ebp, byte [eax + edx]
movzx eax, byte [ecx + 0x21]
shr eax, 3
movzx ebx, byte [eax + edx]
movzx eax, byte [ecx + 0x22]
shr eax, 3
movzx eax, byte [eax + edx]
mov dword [esp + 0x14], eax
jmp 0x50906a
mov eax, dword [esp + 0x20]
mov esi, dword [eax]
jmp 0x508f66
xor ebx, ebx
mov dword [esp + 0x14], 0
xor ebp, ebp
mov dword [esp + 0x10], 0xff
jmp 0x50906a
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov eax, ecx
shr eax, 0x16
movzx ebp, al
mov eax, ecx
shr eax, 0xc
movzx ebx, al
mov eax, ecx
shr eax, 2
movzx edx, al
mov eax, dword [0x567f18]
shr ecx, 0x1e
mov dword [esp + 0x14], edx
movzx eax, byte [ecx + eax]
mov dword [esp + 0x10], eax
jmp 0x50906a
xor ebx, ebx
xor ebp, ebp
mov dword [esp + 0x14], ebp
mov dword [esp + 0x10], ebp
cmp dword [esp + 0x104], 0
mov dword [esp + 0x18], ebp
jne 0x509226
push dword [esp + 0x4c]
mov eax, dword [esp + 0x104]
push dword [esp + 0x4c]
movzx eax, al
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x40]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0x100]
push dword [esp + 0x48]
movzx eax, al
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x3c]
add edi, eax
mov eax, dword [esp + 0xfc]
push dword [esp + 0x3c]
movzx eax, al
adc esi, edx
cdq
push edx
push eax
call fcn.0050cf40
add edi, eax
mov eax, dword [esp + 0xb4]
adc esi, edx
cdq
push edx
push eax
push esi
push edi
call fcn.0050d020
push dword [esp + 0x4c]
mov dword [esp + 0x70], eax
push dword [esp + 0x4c]
movzx eax, byte [esp + 0x109]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x40]
mov edi, eax
mov esi, edx
push dword [esp + 0x48]
movzx eax, byte [esp + 0x105]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x3c]
add edi, eax
movzx eax, byte [esp + 0xfd]
push dword [esp + 0x3c]
adc esi, edx
cdq
push edx
push eax
call fcn.0050cf40
add edi, eax
mov eax, dword [esp + 0xb4]
adc esi, edx
cdq
push edx
push eax
push esi
push edi
call fcn.0050d020
push dword [esp + 0x4c]
mov dword [esp + 0x74], eax
push dword [esp + 0x4c]
movzx eax, byte [esp + 0x10a]
cdq
push edx
push eax
call fcn.0050cf40
mov edi, eax
push dword [esp + 0x40]
movzx eax, byte [esp + 0x102]
mov esi, edx
push dword [esp + 0x48]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x3c]
add edi, eax
movzx eax, byte [esp + 0xfe]
push dword [esp + 0x3c]
adc esi, edx
cdq
push edx
push eax
call fcn.0050cf40
add edi, eax
mov eax, dword [esp + 0xb4]
adc esi, edx
cdq
push edx
push eax
push esi
push edi
call fcn.0050d020
push dword [esp + 0x4c]
mov dword [esp + 0x78], eax
push dword [esp + 0x4c]
movzx eax, byte [esp + 0x10b]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x40]
mov edi, eax
mov esi, edx
push dword [esp + 0x48]
movzx eax, byte [esp + 0x107]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x3c]
add edi, eax
movzx eax, byte [esp + 0xff]
push dword [esp + 0x3c]
adc esi, edx
cdq
push edx
push eax
call fcn.0050cf40
add edi, eax
mov eax, dword [esp + 0xb4]
adc esi, edx
cdq
push edx
push eax
push esi
push edi
call fcn.0050d020
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
test al, 1
je 0x509279
imul edi, dword [esp + 0x6c]
mov eax, 0x80808081
imul esi, dword [esp + 0x70]
imul ecx, dword [esp + 0x74]
mul edi
mov eax, 0x80808081
mov edi, edx
mul esi
mov eax, 0x80808081
shr edi, 7
mov esi, edx
mul ecx
mov eax, dword [esp + 0x50]
shr esi, 7
mov ecx, edx
shr ecx, 7
mov dword [esp + 0x30], esi
mov dword [esp + 0x24], ecx
test al, 2
je 0x509298
mov edx, dword [esp + 0x28]
mov eax, 0x80808081
imul edx, dword [esp + 0x78]
mul edx
mov eax, edx
shr eax, 7
mov dword [esp + 0x28], eax
jmp 0x50929c
mov eax, dword [esp + 0x28]
test byte [esp + 0x50], 0x30
je 0x5092eb
cmp eax, 0xff
jae 0x5092eb
mov ecx, eax
mov eax, 0x80808081
imul ecx, edi
mul ecx
mov ecx, dword [esp + 0x28]
mov eax, 0x80808081
imul ecx, esi
mov edi, edx
shr edi, 7
mul ecx
mov ecx, dword [esp + 0x28]
mov eax, 0x80808081
imul ecx, dword [esp + 0x24]
mov esi, edx
shr esi, 7
mov dword [esp + 0x30], esi
mul ecx
mov ecx, edx
shr ecx, 7
mov dword [esp + 0x24], ecx
mov eax, dword [esp + 0x50]
and eax, 0xf0
cmp eax, 0x80
ja case.0x509306.1
movzx eax, byte [eax + 0x509808]
jmp dword [eax*4 + 0x5097f0]
mov eax, ecx
mov edx, edi
mov ecx, dword [esp + 0x28]
mov ebx, esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ecx
jmp 0x50948a
mov esi, 0xff
mov eax, 0x80808081
sub esi, dword [esp + 0x28]
mov ecx, esi
imul ecx, ebp
mul ecx
mov ecx, esi
mov eax, 0x80808081
imul ecx, ebx
mov ebp, edx
shr ebp, 7
add ebp, edi
mov dword [esp + 0x18], ebp
mul ecx
mov ecx, esi
mov eax, 0x80808081
imul ecx, dword [esp + 0x14]
mov ebx, edx
imul esi, dword [esp + 0x10]
shr ebx, 7
add ebx, dword [esp + 0x30]
mul ecx
mov eax, edx
shr eax, 7
add eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
mov eax, 0x80808081
mul esi
mov ecx, edx
shr ecx, 7
add ecx, dword [esp + 0x28]
mov dword [esp + 0x10], ecx
jmp 0x509482
mov edx, dword [esp + 0x18]
mov eax, 0xff
add edx, edi
cmp edx, 0xff
cmova edx, eax
add ebx, esi
cmp ebx, eax
cmova ebx, eax
mov eax, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
cmp eax, 0xff
jbe 0x50948a
mov eax, 0xff
mov dword [esp + 0x14], eax
jmp 0x50948a
mov ecx, dword [esp + 0x14]
mov eax, 0x80808081
imul ecx, dword [esp + 0x24]
imul ebp, edi
imul ebx, esi
mul ebp
mov eax, 0x80808081
shr edx, 7
mov dword [esp + 0x18], edx
mul ebx
mov eax, 0x80808081
mov ebx, edx
mul ecx
mov ecx, dword [esp + 0x10]
mov eax, edx
shr ebx, 7
shr eax, 7
mov dword [esp + 0x14], eax
jmp 0x509486
sub edi, dword [esp + 0x28]
mov eax, 0x80808081
add edi, 0xff
imul edi, ebp
mul edi
mov edi, 0xff
mov eax, 0x80808081
mov ebp, edx
shr ebp, 7
cmp ebp, 0xff
cmova ebp, edi
sub esi, dword [esp + 0x28]
add esi, edi
mov dword [esp + 0x18], ebp
imul esi, ebx
mul esi
mov eax, 0x80808081
mov ebx, edx
shr ebx, 7
cmp ebx, edi
cmova ebx, edi
sub ecx, dword [esp + 0x28]
add ecx, edi
imul ecx, dword [esp + 0x14]
mul ecx
mov ecx, dword [esp + 0x10]
mov eax, edx
shr eax, 7
cmp eax, edi
cmova eax, edi
mov dword [esp + 0x14], eax
jmp 0x509486
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x58]
test edi, edi
jne 0x5095cf
mov ecx, dword [esp + 0x54]
dec ecx
cmp ecx, 3
ja case.default.0x5095e3
jmp dword [ecx*4 + 0x50988c]
mov ebp, dword [esp + 0x2c]
movzx ecx, byte [ebp + 0x1f]
shr dword [esp + 0x10], cl
movzx ecx, byte [ebp + 0x23]
shl byte [esp + 0x10], cl
movzx ecx, byte [ebp + 0x1e]
shr eax, cl
movzx ecx, byte [ebp + 0x22]
shl al, cl
movzx ecx, byte [ebp + 0x1d]
or byte [esp + 0x10], al
mov eax, dword [esp + 0x10]
shr ebx, cl
movzx ecx, byte [ebp + 0x21]
shl bl, cl
movzx ecx, byte [ebp + 0x1c]
or al, bl
shr edx, cl
movzx ecx, byte [ebp + 0x20]
shl dl, cl
mov ecx, dword [esp + 0x20]
or al, dl
mov byte [ecx], al
jmp case.default.0x5095e3
mov ebp, dword [esp + 0x2c]
movzx ecx, byte [ebp + 0x1f]
shr dword [esp + 0x10], cl
movzx ecx, byte [ebp + 0x23]
shl word [esp + 0x10], cl
movzx ecx, byte [ebp + 0x1e]
shr eax, cl
movzx ecx, byte [ebp + 0x22]
shl ax, cl
movzx ecx, byte [ebp + 0x1d]
or word [esp + 0x10], ax
mov eax, dword [esp + 0x10]
shr ebx, cl
movzx ecx, byte [ebp + 0x21]
shl bx, cl
movzx ecx, byte [ebp + 0x1c]
or ax, bx
shr edx, cl
movzx ecx, byte [ebp + 0x20]
shl dx, cl
mov ecx, dword [esp + 0x20]
or ax, dx
mov word [ecx], ax
jmp case.default.0x5095e3
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
movzx eax, byte [ecx + 0x20]
shr eax, 3
mov byte [eax + esi], dl
movzx eax, byte [ecx + 0x21]
mov edx, dword [esp + 0x14]
shr eax, 3
mov byte [eax + esi], bl
movzx eax, byte [ecx + 0x22]
shr eax, 3
mov byte [eax + esi], dl
jmp case.default.0x5095e3
mov ebp, dword [esp + 0x2c]
movzx ecx, byte [ebp + 0x1f]
shr dword [esp + 0x10], cl
movzx ecx, byte [ebp + 0x23]
shl dword [esp + 0x10], cl
movzx ecx, byte [ebp + 0x1e]
shr eax, cl
movzx ecx, byte [ebp + 0x22]
shl eax, cl
movzx ecx, byte [ebp + 0x1d]
or dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
shr ebx, cl
movzx ecx, byte [ebp + 0x21]
shl ebx, cl
movzx ecx, byte [ebp + 0x1c]
or eax, ebx
shr edx, cl
movzx ecx, byte [ebp + 0x20]
shl edx, cl
mov ecx, dword [esp + 0x20]
or eax, edx
mov dword [ecx], eax
jmp case.default.0x5095e3
jns 0x50969c
mov ecx, dword [esp + 0x54]
dec ecx
cmp ecx, 3
ja case.default.0x5095e3
jmp dword [ecx*4 + 0x50989c]
mov ebp, dword [esp + 0x2c]
movzx ecx, byte [ebp + 0x1e]
shr eax, cl
movzx ecx, byte [ebp + 0x22]
shl al, cl
movzx ecx, byte [ebp + 0x1d]
shr ebx, cl
movzx ecx, byte [ebp + 0x21]
shl bl, cl
movzx ecx, byte [ebp + 0x1c]
or al, bl
shr edx, cl
movzx ecx, byte [ebp + 0x20]
shl dl, cl
mov ecx, dword [esp + 0x20]
or al, dl
or al, byte [ebp + 0x18]
mov byte [ecx], al
jmp case.default.0x5095e3
mov ebp, dword [esp + 0x2c]
movzx ecx, byte [ebp + 0x1e]
shr eax, cl
movzx ecx, byte [ebp + 0x22]
shl ax, cl
movzx ecx, byte [ebp + 0x1d]
shr ebx, cl
movzx ecx, byte [ebp + 0x21]
shl bx, cl
movzx ecx, byte [ebp + 0x1c]
or ax, bx
shr edx, cl
movzx ecx, byte [ebp + 0x20]
shl dx, cl
mov ecx, dword [esp + 0x20]
or ax, dx
or ax, word [ebp + 0x18]
mov word [ecx], ax
jmp case.default.0x5095e3
mov ebp, dword [esp + 0x2c]
movzx ecx, byte [ebp + 0x1e]
shr eax, cl
movzx ecx, byte [ebp + 0x22]
shl eax, cl
movzx ecx, byte [ebp + 0x1d]
shr ebx, cl
movzx ecx, byte [ebp + 0x21]
shl ebx, cl
movzx ecx, byte [ebp + 0x1c]
or eax, ebx
shr edx, cl
movzx ecx, byte [ebp + 0x20]
shl edx, cl
mov ecx, dword [esp + 0x20]
or eax, edx
or eax, dword [ebp + 0x18]
mov dword [ecx], eax
jmp case.default.0x5095e3
test edx, edx
je 0x5096b1
shl edx, 0x16
or edx, 0x300000
mov dword [esp + 0x18], edx
mov ebp, edx
jmp 0x5096b3
xor ebp, ebp
test ebx, ebx
je 0x5096c2
shl ebx, 0xc
or ebx, 0xc00
jmp 0x5096c4
xor ebx, ebx
test eax, eax
je 0x5096d4
lea esi, [eax*4]
or esi, 3
jmp 0x5096d6
xor esi, esi
lea ecx, [ecx + ecx*2]
mov eax, 0x80808081
mul ecx
mov eax, dword [esp + 0x20]
shr edx, 7
shl edx, 0x1e
or edx, esi
or edx, ebx
or edx, ebp
mov dword [eax], edx
mov eax, dword [esp + 0xc4]
cdq
add dword [esp + 0x38], eax
mov eax, dword [esp + 0xcc]
adc dword [esp + 0x3c], edx
cdq
add dword [esp + 0x44], eax
mov eax, dword [esp + 0xd4]
adc dword [esp + 0x40], edx
cdq
add dword [esp + 0x48], eax
adc dword [esp + 0x4c], edx
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0xac]
inc eax
mov ebx, dword [esp + 0x54]
cmp eax, ecx
mov ebp, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x88]
jl 0x508ae0
mov eax, dword [esp + 0xc8]
add dword [esp + 0xec], eax
mov eax, dword [esp + 0xd0]
add dword [esp + 0xf0], eax
mov eax, dword [esp + 0xd8]
add dword [esp + 0xf4], eax
mov eax, dword [esp + 0x90]
add dword [esp + 0x60], eax
mov eax, dword [esp + 0x7c]
inc eax
mov dword [esp + 0x7c], eax
cmp eax, dword [esp + 0xb0]
jl 0x508a80
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x84
ret