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

Disassembly:
mov eax, dword [esp + 0x20]
sub esp, 0x58
push ebx
push ebp
push esi
mov esi, dword [esp + 0x78]
cmp eax, esi
push edi
jne 0x58418f
cmp eax, 2
jne 0x58418f
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0x84]
mov ecx, dword [esp + 0x90]
mov eax, dword [esp + 0x70]
shr ebx, 2
shr edi, 2
shr ecx, 2
shr eax, 1
mov dword [esp + 0x78], ebx
mov dword [esp + 0x84], edi
je 0x584f72
mov esi, dword [esp + 0x6c]
mov ebp, dword [esp + 0x8c]
mov edx, dword [esp + 0x74]
mov dword [esp + 0x6c], ebp
shr esi, 1
shl ecx, 2
mov dword [esp + 0x90], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x14], esi
mov dword [esp + 0x70], ecx
mov dword [esp + 0x88], edx
mov dword [esp + 0x8c], eax
test esi, esi
jbe 0x584132
mov dword [esp + 0x7c], esi
mov ebx, dword [esp + 0x84]
mov eax, dword [esp + 0x78]
add edx, 4
add ebp, 4
mov esi, dword [ecx + ebx*4]
add ecx, 4
mov dword [edx + eax*4 - 4], esi
mov edi, dword [ecx - 4]
mov dword [edx - 4], edi
mov ebx, dword [ecx + ebx*4]
mov dword [edx + eax*4], ebx
mov eax, dword [ecx]
mov dword [edx], eax
add ecx, 4
shr eax, 2
shr ebx, 2
and eax, 0x3f3f3f3f
and ebx, 0x3f3f3f3f
shr edi, 2
add eax, ebx
and edi, 0x3f3f3f3f
shr esi, 2
add eax, edi
and esi, 0x3f3f3f3f
add eax, esi
add edx, 4
mov dword [ebp - 4], eax
mov eax, dword [esp + 0x7c]
dec eax
mov dword [esp + 0x7c], eax
jne 0x5840c6
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x70]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x90]
lea eax, [edx*8]
mov edx, dword [esp + 0x88]
add edx, eax
mov eax, dword [esp + 0x84]
shl eax, 3
add ecx, eax
mov eax, dword [esp + 0x8c]
add ebp, edi
dec eax
mov dword [esp + 0x88], edx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x8c], eax
jne 0x5840be
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret
push eax
call fcn.005812d0
push esi
mov dword [esp + 0x20], eax
call fcn.005812d0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x78]
add esp, 8
shr eax, 1
je 0x584f72
mov ecx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x74]
shr ecx, 1
mov edi, dword [esp + 0x84]
mov edx, dword [esp + 0x78]
mov bl, byte [esp + 0x59]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x28], ebp
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x80]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x1c]
mov esi, ecx
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x14]
test eax, eax
mov dword [esp + 0x70], ebp
mov dword [esp + 0x20], esi
jbe 0x584f40
mov eax, dword [esp + 0x18]
add ebp, edx
add ecx, eax
or eax, 0xffffffff
sub eax, edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x38], eax
mov eax, 1
sub eax, edx
or edx, 0xffffffff
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x18]
sub edx, eax
mov dword [esp + 0x34], edx
mov edx, 2
sub edx, eax
mov dword [esp + 0x74], edx
mov edx, edi
sub edx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x78]
sub eax, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x88]
dec eax
cmp eax, 0xd
ja case.0x584278.5
jmp dword [eax*4 + 0x584f7c]
mov edx, dword [esi]
mov dword [esp + 0x50], edx
jmp case.0x584278.5
mov al, byte [esi]
mov edx, dword [esp + 0x34]
mov byte [esp + 0x50], al
mov byte [esp + 0x53], 0xff
mov al, byte [edx + ecx + 2]
mov edx, dword [esp + 0x74]
mov byte [esp + 0x51], al
mov al, byte [edx + ecx]
mov byte [esp + 0x52], al
jmp case.0x584278.5
mov dx, word [esi]
mov al, dl
shl al, 4
mov byte [esp + 0x50], al
mov al, dl
and al, 0xf0
mov byte [esp + 0x51], al
mov eax, edx
shr eax, 4
and al, 0xf0
mov byte [esp + 0x52], al
xor eax, eax
mov al, dh
and al, 0xf0
mov byte [esp + 0x53], al
jmp case.0x584278.5
mov dx, word [esi]
mov eax, edx
and eax, 0x8000
neg eax
sbb al, al
and eax, 0xff
mov byte [esp + 0x53], al
mov eax, edx
shr eax, 7
and al, 0xf8
mov byte [esp + 0x52], al
mov eax, edx
shr eax, 2
and al, 0xf8
shl dl, 3
mov byte [esp + 0x51], al
mov byte [esp + 0x50], dl
jmp case.0x584278.5
mov dx, word [esi]
xor eax, eax
mov al, dh
mov byte [esp + 0x53], 0xff
and al, 0xf8
mov byte [esp + 0x52], al
mov eax, edx
shr eax, 3
and al, 0xfc
shl dl, 3
mov byte [esp + 0x51], al
mov byte [esp + 0x50], dl
jmp case.0x584278.5
mov dl, byte [esi]
mov byte [esp + 0x53], 0xff
mov al, dl
and al, 0xe0
mov byte [esp + 0x52], al
mov al, dl
and al, 0xfc
shl al, 3
shl dl, 6
mov byte [esp + 0x51], al
mov byte [esp + 0x50], dl
jmp case.0x584278.5
mov dl, byte [esi]
mov byte [esp + 0x53], 0xff
mov byte [esp + 0x50], dl
mov byte [esp + 0x51], dl
mov byte [esp + 0x52], dl
jmp case.0x584278.5
mov dl, byte [esi]
mov byte [esp + 0x50], 0
mov byte [esp + 0x51], 0
mov byte [esp + 0x52], 0
mov byte [esp + 0x53], dl
mov eax, dword [esp + 0x7c]
dec eax
cmp eax, 0xd
ja case.0x584396.5
jmp dword [eax*4 + 0x584fb4]
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x50]
mov dword [eax], edx
jmp case.0x584396.5
mov eax, dword [esp + 0x70]
mov dl, byte [esp + 0x50]
mov byte [eax], dl
mov eax, dword [esp + 0x38]
mov dl, byte [esp + 0x51]
mov byte [eax + ebp + 2], dl
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x3c]
add eax, edx
mov dl, byte [esp + 0x52]
mov byte [eax + ebp + 1], dl
jmp case.0x584396.5
mov al, byte [esp + 0x53]
mov dl, byte [esp + 0x50]
and al, 0xf0
movzx si, al
mov al, byte [esp + 0x52]
and al, 0xf0
movzx ax, al
shl esi, 4
or esi, eax
mov al, byte [esp + 0x51]
and al, 0xf0
shr dl, 4
or al, dl
xor dx, dx
shl esi, 4
mov dl, al
mov eax, dword [esp + 0x70]
or esi, edx
mov word [eax], si
jmp case.0x584396.5
mov dl, byte [esp + 0x52]
xor ax, ax
and dl, 0xf8
mov al, dl
mov dl, byte [esp + 0x51]
and dl, 0xf8
movzx dx, dl
shl eax, 5
or eax, edx
mov dl, byte [esp + 0x53]
shl eax, 2
neg dl
sbb edx, edx
and edx, 0x8000
or eax, edx
mov dl, byte [esp + 0x50]
shr dl, 3
movzx dx, dl
or eax, edx
mov edx, dword [esp + 0x70]
mov word [edx], ax
jmp case.0x584396.5
mov al, byte [esp + 0x52]
xor dx, dx
and al, 0xf8
mov dl, al
mov al, byte [esp + 0x51]
and al, 0xfc
movzx ax, al
shl edx, 5
or edx, eax
mov al, byte [esp + 0x50]
shr al, 3
movzx ax, al
shl edx, 3
or edx, eax
mov eax, dword [esp + 0x70]
mov word [eax], dx
jmp case.0x584396.5
mov dl, byte [esp + 0x51]
mov al, byte [esp + 0x50]
and dl, 0xe7
shr al, 3
or dl, al
mov al, byte [esp + 0x52]
shr dl, 3
and al, 0xe0
or dl, al
mov eax, dword [esp + 0x70]
movzx dx, dl
mov word [eax], dx
jmp case.0x584396.5
mov edx, dword [esp + 0x51]
and edx, 0xff
lea eax, [edx + edx*8]
lea eax, [edx + eax*8]
lea esi, [edx + eax*4]
shl esi, 5
add esi, edx
lea eax, [esi + esi*4]
mov esi, dword [esp + 0x52]
and esi, 0xff
lea edx, [esi + esi*8]
shl edx, 4
add edx, esi
shl edx, 4
add edx, esi
mov esi, dword [esp + 0x50]
and esi, 0xff
lea edx, [edx + edx*2]
lea eax, [eax + edx*2]
mov edx, esi
shl edx, 6
sub edx, esi
lea edx, [edx + edx*2]
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
add eax, edx
shr eax, 0x10
jmp 0x58451d
mov al, byte [esp + 0x50]
mov edx, dword [esp + 0x70]
mov byte [edx], al
mov eax, dword [esp + 0x88]
dec eax
cmp eax, 0xd
ja case.0x584534.5
jmp dword [eax*4 + 0x584fec]
mov edx, dword [ecx]
mov dword [esp + 0x48], edx
jmp case.0x584534.5
mov al, byte [ecx]
mov dl, byte [ecx + 1]
mov byte [esp + 0x48], al
mov al, byte [ecx + 2]
mov byte [esp + 0x49], dl
mov byte [esp + 0x4a], al
mov byte [esp + 0x4b], 0xff
jmp case.0x584534.5
mov dx, word [ecx]
mov al, dl
shl al, 4
mov byte [esp + 0x48], al
mov al, dl
and al, 0xf0
mov byte [esp + 0x49], al
mov eax, edx
shr eax, 4
and al, 0xf0
mov byte [esp + 0x4a], al
xor eax, eax
mov al, dh
and al, 0xf0
mov byte [esp + 0x4b], al
jmp case.0x584534.5
mov dx, word [ecx]
mov eax, edx
and eax, 0x8000
neg eax
sbb al, al
and eax, 0xff
mov byte [esp + 0x4b], al
mov eax, edx
shr eax, 7
and al, 0xf8
mov byte [esp + 0x4a], al
mov eax, edx
shr eax, 2
and al, 0xf8
shl dl, 3
mov byte [esp + 0x49], al
mov byte [esp + 0x48], dl
jmp case.0x584534.5
mov dx, word [ecx]
xor eax, eax
mov al, dh
mov byte [esp + 0x4b], 0xff
and al, 0xf8
mov byte [esp + 0x4a], al
mov eax, edx
shr eax, 3
and al, 0xfc
shl dl, 3
mov byte [esp + 0x49], al
mov byte [esp + 0x48], dl
jmp case.0x584534.5
mov dl, byte [ecx]
mov byte [esp + 0x4b], 0xff
mov al, dl
and al, 0xe0
mov byte [esp + 0x4a], al
mov al, dl
and al, 0xfc
shl al, 3
shl dl, 6
mov byte [esp + 0x49], al
mov byte [esp + 0x48], dl
jmp case.0x584534.5
mov dl, byte [ecx]
mov byte [esp + 0x4b], 0xff
mov byte [esp + 0x48], dl
mov byte [esp + 0x49], dl
mov byte [esp + 0x4a], dl
jmp case.0x584534.5
mov dl, byte [ecx]
mov byte [esp + 0x48], 0
mov byte [esp + 0x49], 0
mov byte [esp + 0x4a], 0
mov byte [esp + 0x4b], dl
mov eax, dword [esp + 0x7c]
dec eax
cmp eax, 0xd
ja case.0x584649.5
jmp dword [eax*4 + 0x585024]
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x48]
mov dword [eax + ebp], edx
jmp case.0x584649.5
mov esi, dword [esp + 0x8c]
mov dl, byte [esp + 0x48]
mov al, byte [esp + 0x49]
mov byte [esi + ebp], dl
mov dl, byte [esp + 0x4a]
mov byte [esi + ebp + 1], al
mov byte [esi + ebp + 2], dl
jmp case.0x584649.5
mov al, byte [esp + 0x4b]
mov dl, byte [esp + 0x48]
and al, 0xf0
movzx si, al
mov al, byte [esp + 0x4a]
and al, 0xf0
movzx ax, al
shl esi, 4
or esi, eax
mov al, byte [esp + 0x49]
and al, 0xf0
shr dl, 4
or al, dl
xor dx, dx
shl esi, 4
mov dl, al
mov eax, dword [esp + 0x8c]
or esi, edx
mov word [eax + ebp], si
jmp case.0x584649.5
mov dl, byte [esp + 0x4a]
xor ax, ax
and dl, 0xf8
mov al, dl
mov dl, byte [esp + 0x49]
and dl, 0xf8
movzx dx, dl
shl eax, 5
or eax, edx
mov dl, byte [esp + 0x48]
shr dl, 3
movzx dx, dl
shl eax, 2
or eax, edx
mov dl, byte [esp + 0x4b]
neg dl
sbb edx, edx
and edx, 0x8000
or eax, edx
mov edx, dword [esp + 0x8c]
mov word [edx + ebp], ax
jmp case.0x584649.5
mov al, byte [esp + 0x4a]
xor dx, dx
and al, 0xf8
mov dl, al
mov al, byte [esp + 0x49]
and al, 0xfc
movzx ax, al
shl edx, 5
or edx, eax
mov al, byte [esp + 0x48]
shr al, 3
movzx ax, al
shl edx, 3
or edx, eax
mov eax, dword [esp + 0x8c]
mov word [eax + ebp], dx
jmp case.0x584649.5
mov dl, byte [esp + 0x49]
mov al, byte [esp + 0x48]
and dl, 0xe7
shr al, 3
or dl, al
mov al, byte [esp + 0x4a]
shr dl, 3
and al, 0xe0
or dl, al
mov eax, dword [esp + 0x8c]
movzx dx, dl
mov word [eax + ebp], dx
jmp case.0x584649.5
mov edx, dword [esp + 0x49]
and edx, 0xff
lea eax, [edx + edx*8]
lea eax, [edx + eax*8]
lea esi, [edx + eax*4]
shl esi, 5
add esi, edx
lea eax, [esi + esi*4]
mov esi, dword [esp + 0x4a]
and esi, 0xff
lea edx, [esi + esi*8]
shl edx, 4
add edx, esi
shl edx, 4
add edx, esi
mov esi, dword [esp + 0x48]
and esi, 0xff
lea edx, [edx + edx*2]
lea eax, [eax + edx*2]
mov edx, esi
shl edx, 6
sub edx, esi
lea edx, [edx + edx*2]
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
add eax, edx
shr eax, 0x10
jmp 0x5847d7
mov al, byte [esp + 0x48]
mov edx, dword [esp + 0x8c]
mov byte [edx + ebp], al
mov eax, dword [esp + 0x88]
dec eax
cmp eax, 0xd
ja case.0x5847f2.5
jmp dword [eax*4 + 0x58505c]
mov edx, dword [esp + 0x80]
mov eax, dword [edx + ecx]
mov dword [esp + 0x40], eax
jmp case.0x5847f2.5
mov esi, dword [esp + 0x80]
mov eax, dword [esp + 0x74]
mov byte [esp + 0x43], 0xff
mov dl, byte [esi + ecx]
mov byte [esp + 0x40], dl
lea edx, [eax + edi - 1]
mov al, byte [edx + ecx]
mov dl, byte [esi + ecx + 2]
mov byte [esp + 0x41], al
mov byte [esp + 0x42], dl
jmp case.0x5847f2.5
mov eax, dword [esp + 0x80]
mov dx, word [eax + ecx]
mov al, dl
shl al, 4
mov byte [esp + 0x40], al
mov al, dl
and al, 0xf0
mov byte [esp + 0x41], al
mov eax, edx
shr eax, 4
and al, 0xf0
mov byte [esp + 0x42], al
xor eax, eax
mov al, dh
and al, 0xf0
jmp 0x58493d
mov edx, dword [esp + 0x80]
mov dx, word [edx + ecx]
mov eax, edx
and eax, 0x8000
neg eax
sbb al, al
and eax, 0xff
mov byte [esp + 0x43], al
mov eax, edx
shr eax, 7
and al, 0xf8
mov byte [esp + 0x42], al
mov eax, edx
shr eax, 2
and al, 0xf8
shl dl, 3
mov byte [esp + 0x41], al
mov byte [esp + 0x40], dl
jmp case.0x5847f2.5
mov eax, dword [esp + 0x80]
mov byte [esp + 0x43], 0xff
mov dx, word [eax + ecx]
xor eax, eax
mov al, dh
and al, 0xf8
mov byte [esp + 0x42], al
mov eax, edx
shr eax, 3
and al, 0xfc
shl dl, 3
mov byte [esp + 0x41], al
mov byte [esp + 0x40], dl
jmp case.0x5847f2.5
mov edx, dword [esp + 0x80]
mov byte [esp + 0x43], 0xff
mov dl, byte [edx + ecx]
mov al, dl
and al, 0xe0
mov byte [esp + 0x42], al
mov al, dl
and al, 0xfc
shl al, 3
shl dl, 6
mov byte [esp + 0x41], al
mov byte [esp + 0x40], dl
jmp case.0x5847f2.5
mov eax, dword [esp + 0x80]
mov byte [esp + 0x43], 0xff
mov dl, byte [eax + ecx]
mov byte [esp + 0x40], dl
mov byte [esp + 0x41], dl
mov byte [esp + 0x42], dl
jmp case.0x5847f2.5
mov edx, dword [esp + 0x80]
mov byte [esp + 0x40], 0
mov byte [esp + 0x41], 0
mov byte [esp + 0x42], 0
mov al, byte [edx + ecx]
mov byte [esp + 0x43], al
mov edx, dword [esp + 0x7c]
lea eax, [edx - 1]
cmp eax, 0xd
ja case.0x584951.5
jmp dword [eax*4 + 0x585094]
mov eax, dword [esp + 0x40]
mov dword [ebp], eax
jmp case.0x584951.5
mov dl, byte [esp + 0x40]
mov al, byte [esp + 0x41]
mov byte [ebp], dl
mov dl, byte [esp + 0x42]
mov byte [ebp + 1], al
mov byte [ebp + 2], dl
jmp case.0x584951.5
mov al, byte [esp + 0x43]
mov dl, byte [esp + 0x40]
and al, 0xf0
movzx si, al
mov al, byte [esp + 0x42]
and al, 0xf0
movzx ax, al
shl esi, 4
or esi, eax
mov al, byte [esp + 0x41]
and al, 0xf0
shr dl, 4
or al, dl
xor dx, dx
shl esi, 4
mov dl, al
or esi, edx
mov word [ebp], si
jmp case.0x584951.5
mov al, byte [esp + 0x42]
xor dx, dx
and al, 0xf8
mov dl, al
mov al, byte [esp + 0x41]
and al, 0xf8
movzx ax, al
shl edx, 5
or edx, eax
mov al, byte [esp + 0x43]
shl edx, 2
neg al
sbb eax, eax
and eax, 0x8000
or edx, eax
mov al, byte [esp + 0x40]
shr al, 3
movzx ax, al
or edx, eax
mov word [ebp], dx
jmp case.0x584951.5
mov dl, byte [esp + 0x42]
xor ax, ax
and dl, 0xf8
mov al, dl
mov dl, byte [esp + 0x41]
and dl, 0xfc
movzx dx, dl
shl eax, 5
or eax, edx
mov dl, byte [esp + 0x40]
shr dl, 3
movzx dx, dl
shl eax, 3
or eax, edx
mov word [ebp], ax
jmp case.0x584951.5
mov al, byte [esp + 0x41]
mov dl, byte [esp + 0x40]
and al, 0xe7
shr dl, 3
or al, dl
mov dl, byte [esp + 0x42]
shr al, 3
and dl, 0xe0
or al, dl
movzx ax, al
mov word [ebp], ax
jmp case.0x584951.5
mov edx, dword [esp + 0x41]
and edx, 0xff
lea eax, [edx + edx*8]
lea eax, [edx + eax*8]
lea esi, [edx + eax*4]
shl esi, 5
add esi, edx
lea eax, [esi + esi*4]
mov esi, dword [esp + 0x42]
and esi, 0xff
lea edx, [esi + esi*8]
shl edx, 4
add edx, esi
shl edx, 4
add edx, esi
mov esi, dword [esp + 0x40]
and esi, 0xff
lea edx, [edx + edx*2]
lea eax, [eax + edx*2]
mov edx, esi
shl edx, 6
sub edx, esi
lea edx, [edx + edx*2]
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
add eax, edx
shr eax, 0x10
jmp 0x584ab2
mov al, byte [esp + 0x40]
mov byte [ebp], al
mov edx, dword [esp + 0x88]
lea eax, [edx - 1]
cmp eax, 0xd
ja case.0x584ac4.5
jmp dword [eax*4 + 0x5850cc]
mov eax, dword [ecx + edi]
mov dword [esp + 0x58], eax
mov al, byte [esp + 0x5a]
mov bl, byte [esp + 0x59]
jmp 0x584b29
mov dl, byte [ecx + edi]
mov bl, byte [edi + ecx + 1]
mov al, byte [ecx + edi + 2]
mov byte [esp + 0x58], dl
mov byte [esp + 0x59], bl
mov byte [esp + 0x5a], al
mov byte [esp + 0x5b], 0xff
jmp 0x584b29
mov dx, word [ecx + edi]
mov al, dl
mov bl, dl
shl al, 4
mov byte [esp + 0x58], al
mov eax, edx
shr eax, 4
and al, 0xf0
and bl, 0xf0
mov byte [esp + 0x5a], al
xor eax, eax
mov al, dh
mov byte [esp + 0x59], bl
and al, 0xf0
mov byte [esp + 0x5b], al
mov al, byte [esp + 0x5a]
mov edx, dword [esp + 0x7c]
dec edx
cmp edx, 0xd
ja case.0x584b37.5
jmp dword [edx*4 + 0x585104]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x58]
mov dword [edx + ebp], eax
jmp case.0x584b37.5
mov dx, word [ecx + edi]
mov eax, edx
mov ebx, edx
and eax, 0x8000
neg eax
sbb al, al
and eax, 0xff
mov byte [esp + 0x5b], al
mov eax, edx
shr eax, 7
shr ebx, 2
and al, 0xf8
and bl, 0xf8
shl dl, 3
mov byte [esp + 0x5a], al
mov byte [esp + 0x59], bl
mov byte [esp + 0x58], dl
jmp 0x584b29
mov dx, word [ecx + edi]
xor eax, eax
mov ebx, edx
mov al, dh
shr ebx, 3
and al, 0xf8
and bl, 0xfc
shl dl, 3
mov byte [esp + 0x5b], 0xff
mov byte [esp + 0x5a], al
mov byte [esp + 0x59], bl
mov byte [esp + 0x58], dl
jmp 0x584b29
mov dl, byte [ecx + edi]
mov byte [esp + 0x5b], 0xff
mov bl, dl
mov al, dl
and bl, 0xfc
and al, 0xe0
shl bl, 3
shl dl, 6
mov byte [esp + 0x5a], al
mov byte [esp + 0x59], bl
mov byte [esp + 0x58], dl
jmp 0x584b29
mov dl, byte [ecx + edi]
mov byte [esp + 0x5b], 0xff
mov bl, dl
mov al, dl
mov byte [esp + 0x58], dl
mov byte [esp + 0x59], bl
mov byte [esp + 0x5a], al
jmp 0x584b29
mov dl, byte [ecx + edi]
xor bl, bl
xor al, al
mov byte [esp + 0x58], 0
mov byte [esp + 0x59], bl
mov byte [esp + 0x5a], al
mov byte [esp + 0x5b], dl
jmp 0x584b29
mov esi, dword [esp + 0x10]
mov dl, byte [esp + 0x58]
mov byte [esi + ebp], dl
mov edx, esi
mov byte [edx + ebp + 1], bl
mov byte [edx + ebp + 2], al
jmp case.0x584b37.5
mov al, byte [esp + 0x5b]
mov dl, byte [esp + 0x58]
and al, 0xf0
movzx si, al
mov al, byte [esp + 0x5a]
and al, 0xf0
movzx ax, al
shl esi, 4
or esi, eax
mov al, bl
and al, 0xf0
shr dl, 4
or al, dl
xor dx, dx
shl esi, 4
mov dl, al
mov eax, dword [esp + 0x10]
or esi, edx
mov word [eax + ebp], si
jmp case.0x584b37.5
and al, 0xf8
xor dx, dx
mov dl, al
mov al, bl
and al, 0xf8
movzx ax, al
shl edx, 5
or edx, eax
mov al, byte [esp + 0x5b]
shl edx, 2
neg al
sbb eax, eax
and eax, 0x8000
or edx, eax
jmp 0x584ca9
and al, 0xf8
xor dx, dx
mov dl, al
mov al, bl
and al, 0xfc
movzx ax, al
shl edx, 5
or edx, eax
shl edx, 3
mov al, byte [esp + 0x58]
shr al, 3
movzx ax, al
or edx, eax
mov eax, dword [esp + 0x10]
mov word [eax + ebp], dx
jmp case.0x584b37.5
mov al, byte [esp + 0x58]
mov dl, bl
and dl, 0xe7
shr al, 3
or dl, al
mov al, byte [esp + 0x5a]
shr dl, 3
and al, 0xe0
or dl, al
mov eax, dword [esp + 0x10]
movzx dx, dl
mov word [eax + ebp], dx
jmp case.0x584b37.5
mov edx, dword [esp + 0x59]
and edx, 0xff
lea eax, [edx + edx*8]
lea eax, [edx + eax*8]
lea esi, [edx + eax*4]
shl esi, 5
add esi, edx
lea eax, [esi + esi*4]
mov esi, dword [esp + 0x5a]
and esi, 0xff
lea edx, [esi + esi*8]
shl edx, 4
add edx, esi
shl edx, 4
add edx, esi
mov esi, dword [esp + 0x58]
and esi, 0xff
lea edx, [edx + edx*2]
lea eax, [eax + edx*2]
mov edx, esi
shl edx, 6
sub edx, esi
lea edx, [edx + edx*2]
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
add eax, edx
shr eax, 0x10
jmp 0x584d47
mov al, byte [esp + 0x58]
mov edx, dword [esp + 0x10]
mov byte [edx + ebp], al
mov edx, dword [esp + 0x58]
mov eax, dword [esp + 0x40]
shr edx, 2
shr eax, 2
and edx, 0x3f3f3f3f
and eax, 0x3f3f3f3f
add edx, eax
mov eax, dword [esp + 0x48]
shr eax, 2
and eax, 0x3f3f3f3f
add edx, eax
mov eax, dword [esp + 0x50]
shr eax, 2
and eax, 0x3f3f3f3f
add edx, eax
mov eax, dword [esp + 0x7c]
dec eax
mov dword [esp + 0x60], edx
cmp eax, 0xd
ja case.0x584d97.5
jmp dword [eax*4 + 0x58513c]
mov eax, dword [esp + 0x6c]
mov dword [eax], edx
jmp case.0x584d97.5
mov esi, dword [esp + 0x6c]
mov byte [esi], dl
mov dl, byte [esp + 0x62]
mov byte [esi + 1], dh
mov byte [esi + 2], dl
jmp case.0x584d97.5
mov eax, dword [esp + 0x62]
mov bl, ah
and al, 0xf0
and bl, 0xf0
movzx si, bl
movzx ax, al
shl esi, 4
or esi, eax
mov al, dh
and al, 0xf0
mov bl, byte [esp + 0x59]
shr dl, 4
or al, dl
xor dx, dx
shl esi, 4
mov dl, al
mov eax, dword [esp + 0x6c]
or esi, edx
mov word [eax], si
jmp case.0x584d97.5
mov eax, dword [esp + 0x62]
mov bl, al
mov al, ah
and bl, 0xf8
movzx si, bl
mov bl, dh
and bl, 0xf8
movzx bx, bl
shl esi, 5
or esi, ebx
mov bl, byte [esp + 0x59]
shl esi, 2
neg al
sbb eax, eax
shr dl, 3
and eax, 0x8000
movzx dx, dl
or esi, eax
mov eax, dword [esp + 0x6c]
or esi, edx
mov word [eax], si
jmp case.0x584d97.5
mov al, byte [esp + 0x62]
and al, 0xf8
movzx si, al
mov al, dh
and al, 0xfc
movzx ax, al
shl esi, 5
shr dl, 3
or esi, eax
mov eax, dword [esp + 0x6c]
movzx dx, dl
shl esi, 3
or esi, edx
mov word [eax], si
jmp case.0x584d97.5
mov al, dh
and al, 0xe7
shr dl, 3
or al, dl
mov dl, byte [esp + 0x62]
shr al, 3
and dl, 0xe0
or al, dl
mov edx, dword [esp + 0x6c]
movzx ax, al
mov word [edx], ax
jmp case.0x584d97.5
mov esi, dword [esp + 0x61]
and edx, 0xff
and esi, 0xff
lea eax, [esi + esi*8]
lea eax, [esi + eax*8]
lea edi, [esi + eax*4]
shl edi, 5
add edi, esi
lea eax, [edi + edi*4]
mov edi, dword [esp + 0x62]
and edi, 0xff
lea esi, [edi + edi*8]
shl esi, 4
add esi, edi
shl esi, 4
add esi, edi
mov edi, dword [esp + 0x84]
lea esi, [esi + esi*2]
lea eax, [eax + esi*2]
mov esi, edx
shl esi, 6
sub esi, edx
lea edx, [esi + esi*2]
lea edx, [edx + edx*4]
lea edx, [edx + edx*4]
add eax, edx
mov edx, dword [esp + 0x6c]
shr eax, 0x10
mov byte [edx], al
jmp case.0x584d97.5
mov eax, dword [esp + 0x6c]
mov byte [eax], dl
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x70]
lea eax, [edx + edx]
add esi, eax
add ebp, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x20]
add eax, eax
add esi, eax
add ecx, eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x20], esi
add eax, edx
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x24]
dec eax
mov dword [esp + 0x24], eax
jne 0x584267
mov ecx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x78]
mov esi, dword [esp + 0x1c]
lea eax, [edx + edx]
add ebp, eax
lea eax, [edi + edi]
add ecx, eax
mov eax, dword [esp + 0x90]
add esi, eax
mov eax, dword [esp + 0x30]
dec eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x30], eax
jne 0x5841ed
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret