Function at 0x40f708
Capabilities:
Encrypt data using des

Disassembly:
push ebp
sub esp, 0x40
mov edx, dword [esp + 0x48]
xor ecx, ecx
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], eax
mov dword [esp], ebx
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp + 0x14], edx
xor eax, eax
mov byte [esp + 0x28], al
xor esi, esi
mov byte [esp + 0x29], al
mov byte [esp + 0x2a], al
mov byte [esp + 0x2b], al
mov byte [esp + 0x2c], al
mov byte [esp + 0x2d], al
mov byte [esp + 0x2e], al
mov byte [esp + 0x2f], al
movsx ecx, byte [esi + 0x42a640]
test ecx, ecx
je 0x40f7d0
lea eax, [ecx - 1]
mov edx, eax
sar edx, 2
shr edx, 0x1d
lea edx, [edx + ecx - 1]
sar edx, 3
and eax, 0x80000007
jge 0x40f782
dec eax
or eax, 0xfffffff8
inc eax
movsx edx, byte [esp + edx + 0x20]
neg eax
add eax, 7
mov ecx, eax
mov ebx, 1
shl ebx, cl
mov eax, esi
movsx edi, bl
and edi, edx
xor ebx, ebx
test edi, edi
setne bl
mov edi, esi
sar edi, 2
shr edi, 0x1d
add edi, esi
sar edi, 3
and eax, 0x80000007
movzx edx, byte [esp + edi + 0x28]
jge 0x40f7c1
dec eax
or eax, 0xfffffff8
inc eax
neg eax
add eax, 7
mov ecx, eax
shl ebx, cl
or edx, ebx
mov byte [esp + edi + 0x28], dl
add esi, 1
cmp esi, 0x40
jl 0x40f759
mov edx, dword [esp + 0x14]
movzx eax, byte [esp + 0x2c]
mov byte [esp + 0x13], al
movzx eax, byte [esp + 0x2b]
mov byte [esp + 0xc], al
movzx eax, byte [esp + 0x28]
mov byte [esp + 0xf], al
movzx eax, byte [esp + 0x2f]
mov byte [esp + 0x10], al
movzx eax, byte [esp + 0x2a]
mov byte [esp + 0xd], al
movzx eax, byte [esp + 0x2e]
mov byte [esp + 0x11], al
movzx eax, byte [esp + 0x29]
mov byte [esp + 0xe], al
movzx eax, byte [esp + 0x2d]
mov byte [esp + 0x12], al
mov ecx, dword [esp + 0x10]
mov eax, ecx
rol eax, 0x1f
mov ebx, eax
shr ebx, 0x1a
xor ebx, 0xfffffff1
and ebx, 0x3f
mov esi, dword [ebx*4 + 0x42abc0]
mov ebx, eax
xor ebx, 0x1800000
shr ebx, 0x16
and ebx, 0x3f
or esi, dword [ebx*4 + 0x42a8c0]
mov ebx, eax
shr ebx, 0x12
xor ebx, 0xffffffed
and ebx, 0x3f
or esi, dword [ebx*4 + 0x42aac0]
mov ebx, eax
xor ebx, 0x68000
shr ebx, 0xe
and ebx, 0x3f
or esi, dword [ebx*4 + 0x42aec0]
mov ebx, eax
shr ebx, 0xa
xor ebx, 0xfffffff1
and ebx, 0x3f
or esi, dword [ebx*4 + 0x42acc0]
mov ebx, eax
shr ebx, 6
xor ebx, 0xfffffff2
and ebx, 0x3f
or esi, dword [ebx*4 + 0x42adc0]
xor eax, 0x38
and eax, 0xfc
or esi, dword [eax + 0x42a9c0]
mov eax, ecx
rol eax, 1
xor eax, 0xfffffff7
and eax, 0x3f
or esi, dword [eax*4 + 0x42afc0]
xor esi, dword [esp + 0xc]
mov eax, esi
rol eax, 0x1f
mov ebx, eax
xor ebx, 0x24000000
shr ebx, 0x1a
mov edi, dword [ebx*4 + 0x42abc0]
mov ebx, eax
shr ebx, 0x16
xor ebx, 0xffffffe4
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42a8c0]
mov ebx, eax
xor ebx, 0x3c0000
shr ebx, 0x12
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42aac0]
mov ebx, eax
shr ebx, 0xe
xor ebx, 0xfffffff6
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42aec0]
mov ebx, eax
shr ebx, 0xa
xor ebx, 0xffffffed
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42acc0]
mov ebx, eax
xor ebx, 0x780
shr ebx, 6
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42adc0]
xor eax, 0x34
and eax, 0xfc
or edi, dword [eax + 0x42a9c0]
mov eax, esi
rol eax, 1
xor eax, 0x13
and eax, 0x3f
or edi, dword [eax*4 + 0x42afc0]
xor edi, ecx
mov ecx, edi
rol ecx, 0x1f
mov eax, ecx
shr eax, 0x1a
xor eax, 0xffffffef
and eax, 0x3f
mov eax, dword [eax*4 + 0x42abc0]
mov ebx, ecx
shr ebx, 0x16
xor ebx, 0xffffffe5
and ebx, 0x3f
or eax, dword [ebx*4 + 0x42a8c0]
mov ebx, ecx
xor ebx, 0x100000
shr ebx, 0x12
and ebx, 0x3f
or eax, dword [ebx*4 + 0x42aac0]
mov ebx, ecx
xor ebx, 0x14000
shr ebx, 0xe
and ebx, 0x3f
or eax, dword [ebx*4 + 0x42aec0]
mov ebx, ecx
xor ebx, 0x7400
shr ebx, 0xa
and ebx, 0x3f
or eax, dword [ebx*4 + 0x42acc0]
mov ebx, ecx
shr ebx, 6
xor ebx, 0xfffffffa
and ebx, 0x3f
or eax, dword [ebx*4 + 0x42adc0]
xor ecx, 0x64
and ecx, 0xfc
or eax, dword [ecx + 0x42a9c0]
mov ecx, edi
rol ecx, 1
xor ecx, 6
and ecx, 0x3f
or eax, dword [ecx*4 + 0x42afc0]
xor eax, esi
mov ebx, eax
rol ebx, 0x1f
mov ecx, ebx
xor ecx, 0x8000000
shr ecx, 0x1a
mov ecx, dword [ecx*4 + 0x42abc0]
mov esi, ebx
shr esi, 0x16
xor esi, 0xfffffff0
and esi, 0x3f
or ecx, dword [esi*4 + 0x42a8c0]
mov esi, ebx
xor esi, 0x340000
shr esi, 0x12
and esi, 0x3f
or ecx, dword [esi*4 + 0x42aac0]
mov esi, ebx
shr esi, 0xe
xor esi, 0xfffffff9
and esi, 0x3f
or ecx, dword [esi*4 + 0x42aec0]
mov esi, ebx
shr esi, 0xa
not esi
and esi, 0x3f
or ecx, dword [esi*4 + 0x42acc0]
mov esi, ebx
xor esi, 0x280
shr esi, 6
and esi, 0x3f
or ecx, dword [esi*4 + 0x42adc0]
xor ebx, 0x5c
and ebx, 0xfc
or ecx, dword [ebx + 0x42a9c0]
mov ebx, eax
rol ebx, 1
xor ebx, 0xe
and ebx, 0x3f
or ecx, dword [ebx*4 + 0x42afc0]
xor ecx, edi
mov esi, ecx
rol esi, 0x1f
mov ebx, esi
shr ebx, 0x1a
xor ebx, 0xffffffe3
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x42abc0]
mov edi, esi
xor edi, 0x5400000
shr edi, 0x16
and edi, 0x3f
or ebx, dword [edi*4 + 0x42a8c0]
mov edi, esi
xor edi, 0x80000
shr edi, 0x12
and edi, 0x3f
or ebx, dword [edi*4 + 0x42aac0]
mov edi, esi
shr edi, 0xe
xor edi, 0xfffffffd
and edi, 0x3f
or ebx, dword [edi*4 + 0x42aec0]
mov edi, esi
xor edi, 0x2c00
shr edi, 0xa
and edi, 0x3f
or ebx, dword [edi*4 + 0x42acc0]
mov edi, esi
xor edi, 0x3c0
shr edi, 6
and edi, 0x3f
or ebx, dword [edi*4 + 0x42adc0]
xor esi, 0x6c
and esi, 0xfc
or ebx, dword [esi + 0x42a9c0]
mov esi, ecx
rol esi, 1
xor esi, 0xf
and esi, 0x3f
or ebx, dword [esi*4 + 0x42afc0]
xor ebx, eax
mov esi, ebx
rol esi, 0x1f
mov eax, esi
shr eax, 0x1a
xor eax, 0xffffffe5
and eax, 0x3f
mov eax, dword [eax*4 + 0x42abc0]
mov edi, esi
shr edi, 0x16
xor edi, 0xfffffff0
and edi, 0x3f
or eax, dword [edi*4 + 0x42a8c0]
mov edi, esi
shr edi, 0x12
xor edi, 0xffffffef
and edi, 0x3f
or eax, dword [edi*4 + 0x42aac0]
mov edi, esi
xor edi, 0x20000
shr edi, 0xe
and edi, 0x3f
or eax, dword [edi*4 + 0x42aec0]
mov edi, esi
xor edi, 0x7c00
shr edi, 0xa
and edi, 0x3f
or eax, dword [edi*4 + 0x42acc0]
mov edi, esi
shr edi, 6
xor edi, 0xffffffef
and edi, 0x3f
or eax, dword [edi*4 + 0x42adc0]
xor esi, 0x4c
and esi, 0xfc
or eax, dword [esi + 0x42a9c0]
mov esi, ebx
rol esi, 1
xor esi, 0xffffffe3
and esi, 0x3f
or eax, dword [esi*4 + 0x42afc0]
xor eax, ecx
mov esi, eax
rol esi, 0x1f
mov ecx, esi
xor ecx, 0x18000000
shr ecx, 0x1a
mov ecx, dword [ecx*4 + 0x42abc0]
mov edi, esi
shr edi, 0x16
xor edi, 0xffffffe7
and edi, 0x3f
or ecx, dword [edi*4 + 0x42a8c0]
mov edi, esi
shr edi, 0x12
xor edi, 0xffffffea
and edi, 0x3f
or ecx, dword [edi*4 + 0x42aac0]
mov edi, esi
shr edi, 0xe
xor edi, 0xffffffe1
and edi, 0x3f
or ecx, dword [edi*4 + 0x42aec0]
mov edi, esi
shr edi, 0xa
xor edi, 0xffffffeb
and edi, 0x3f
or ecx, dword [edi*4 + 0x42acc0]
mov edi, esi
shr edi, 6
xor edi, 0xffffffec
and edi, 0x3f
or ecx, dword [edi*4 + 0x42adc0]
and esi, 0xfffffffc
xor esi, 0xffffffd4
and esi, 0xfc
or ecx, dword [esi + 0x42a9c0]
mov esi, eax
rol esi, 1
xor esi, 0xffffffeb
and esi, 0x3f
or ecx, dword [esi*4 + 0x42afc0]
xor ecx, ebx
mov esi, ecx
rol esi, 0x1f
mov ebx, esi
shr ebx, 0x1a
xor ebx, 0xffffffe6
and ebx, 0x3f
mov edi, esi
mov ebx, dword [ebx*4 + 0x42abc0]
xor edi, 0x4c00000
shr edi, 0x16
and edi, 0x3f
or ebx, dword [edi*4 + 0x42a8c0]
mov edi, esi
shr edi, 0x12
xor edi, 0xfffffff5
and edi, 0x3f
or ebx, dword [edi*4 + 0x42aac0]
mov edi, esi
xor edi, 0x30000
shr edi, 0xe
and edi, 0x3f
or ebx, dword [edi*4 + 0x42aec0]
mov edi, esi
shr edi, 0xa
xor edi, 0xffffffe3
and edi, 0x3f
or ebx, dword [edi*4 + 0x42acc0]
mov edi, esi
shr edi, 6
xor edi, 0xffffffef
and edi, 0x3f
or ebx, dword [edi*4 + 0x42adc0]
and esi, 0xfffffffc
xor esi, 0xfffffff4
and esi, 0xfc
or ebx, dword [esi + 0x42a9c0]
mov esi, ecx
rol esi, 1
xor esi, 0x12
and esi, 0x3f
or ebx, dword [esi*4 + 0x42afc0]
xor ebx, eax
mov esi, ebx
rol esi, 0x1f
mov eax, esi
shr eax, 0x1a
mov eax, dword [eax*4 + 0x42abc0]
mov edi, esi
shr edi, 0x16
xor edi, 0xfffffff2
and edi, 0x3f
or eax, dword [edi*4 + 0x42a8c0]
mov edi, esi
shr edi, 0x12
xor edi, 0xfffffff2
and edi, 0x3f
or eax, dword [edi*4 + 0x42aac0]
mov edi, esi
xor edi, 0x78000
shr edi, 0xe
and edi, 0x3f
or eax, dword [edi*4 + 0x42aec0]
mov edi, esi
shr edi, 0xa
xor edi, 0xfffffff3
and edi, 0x3f
or eax, dword [edi*4 + 0x42acc0]
mov edi, esi
xor edi, 0x440
shr edi, 6
and edi, 0x3f
or eax, dword [edi*4 + 0x42adc0]
and esi, 0xfffffffc
xor esi, 0xffffff94
and esi, 0xfc
or eax, dword [esi + 0x42a9c0]
mov esi, ebx
rol esi, 1
xor esi, 0xfffffffb
and esi, 0x3f
or eax, dword [esi*4 + 0x42afc0]
xor eax, ecx
mov esi, eax
rol esi, 0x1f
mov ecx, esi
xor ecx, 0x7c000000
shr ecx, 0x1a
mov ecx, dword [ecx*4 + 0x42abc0]
mov edi, esi
xor edi, 0x800000
shr edi, 0x16
and edi, 0x3f
or ecx, dword [edi*4 + 0x42a8c0]
mov edi, esi
xor edi, 0x480000
shr edi, 0x12
and edi, 0x3f
or ecx, dword [edi*4 + 0x42aac0]
mov edi, esi
shr edi, 0xe
xor edi, 0xfffffff4
and edi, 0x3f
or ecx, dword [edi*4 + 0x42aec0]
mov edi, esi
shr edi, 0xa
xor edi, 0xfffffff1
and edi, 0x3f
mov edi, dword [edi*4 + 0x42acc0]
mov dword [esp + 0x14], edx
or ecx, edi
mov edi, esi
shr edi, 6
xor edi, 0xfffffffd
and edi, 0x3f
or ecx, dword [edi*4 + 0x42adc0]
and esi, 0xfffffffc
xor esi, 0xffffffa4
and esi, 0xfc
or ecx, dword [esi + 0x42a9c0]
mov esi, eax
rol esi, 1
xor esi, 0xfffffffc
and esi, 0x3f
or ecx, dword [esi*4 + 0x42afc0]
xor ecx, ebx
mov ebx, ecx
rol ebx, 0x1f
mov esi, ebx
shr esi, 0x1a
xor esi, 0xfffffff5
and esi, 0x3f
mov esi, dword [esi*4 + 0x42abc0]
mov edi, ebx
shr edi, 0x16
xor edi, 0xffffffe8
and edi, 0x3f
or esi, dword [edi*4 + 0x42a8c0]
mov edi, ebx
shr edi, 0x12
xor edi, 0xfffffff0
and edi, 0x3f
or esi, dword [edi*4 + 0x42aac0]
mov edi, ebx
shr edi, 0xe
xor edi, 0xffffffe8
and edi, 0x3f
or esi, dword [edi*4 + 0x42aec0]
mov edi, ebx
xor edi, 0x5000
shr edi, 0xa
and edi, 0x3f
or esi, dword [edi*4 + 0x42acc0]
mov edi, ebx
xor edi, 0x640
shr edi, 6
and edi, 0x3f
or esi, dword [edi*4 + 0x42adc0]
shr ebx, 2
not ebx
and ebx, 0x3f
or esi, dword [ebx*4 + 0x42a9c0]
mov ebx, ecx
rol ebx, 1
xor ebx, 0xfffffffc
and ebx, 0x3f
or esi, dword [ebx*4 + 0x42afc0]
xor esi, eax
mov eax, esi
rol eax, 0x1f
mov ebx, eax
shr ebx, 0x1a
xor ebx, 0xfffffff2
and ebx, 0x3f
mov edi, dword [ebx*4 + 0x42abc0]
mov ebx, eax
shr ebx, 0x16
xor ebx, 0xffffffea
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42a8c0]
mov ebx, eax
xor ebx, 0x200000
shr ebx, 0x12
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42aac0]
mov ebx, eax
shr ebx, 0xe
xor ebx, 0xfffffff6
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42aec0]
mov ebx, eax
shr ebx, 0xa
xor ebx, 0xffffffe6
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42acc0]
mov ebx, eax
xor ebx, 0x640
shr ebx, 6
and ebx, 0x3f
or edi, dword [ebx*4 + 0x42adc0]
and eax, 0xfffffffc
xor eax, 0xffffffc8
and eax, 0xfc
or edi, dword [eax + 0x42a9c0]
mov eax, esi
rol eax, 1
xor eax, 0xfffffffd
and eax, 0x3f
or edi, dword [eax*4 + 0x42afc0]
xor edi, ecx
mov eax, edi
rol eax, 0x1f
mov ecx, eax
shr ecx, 0x1a
xor ecx, 0xffffffeb
and ecx, 0x3f
mov ebx, dword [ecx*4 + 0x42abc0]
mov ecx, eax
xor ecx, 0x2400000
shr ecx, 0x16
and ecx, 0x3f
or ebx, dword [ecx*4 + 0x42a8c0]
mov ecx, eax
shr ecx, 0x12
xor ecx, 0xfffffff8
and ecx, 0x3f
or ebx, dword [ecx*4 + 0x42aac0]
mov ecx, eax
xor ecx, 0x38000
shr ecx, 0xe
and ecx, 0x3f
or ebx, dword [ecx*4 + 0x42aec0]
mov ecx, eax
xor ecx, 0x4800
shr ecx, 0xa
and ecx, 0x3f
or ebx, dword [ecx*4 + 0x42acc0]
mov ecx, eax
shr ecx, 6
xor ecx, 0xfffffff7
and ecx, 0x3f
or ebx, dword [ecx*4 + 0x42adc0]
and eax, 0xfffffffc
xor eax, 0xffffffe8
and eax, 0xfc
or ebx, dword [eax + 0x42a9c0]
mov eax, edi
rol eax, 1
xor eax, 0xfffffff5
and eax, 0x3f
or ebx, dword [eax*4 + 0x42afc0]
xor ebx, esi
mov eax, ebx
rol eax, 0x1f
mov ecx, eax
xor ecx, 0x60000000
shr ecx, 0x1a
mov esi, dword [ecx*4 + 0x42abc0]
mov ecx, eax
shr ecx, 0x16
xor ecx, 0xffffffe3
and ecx, 0x3f
or esi, dword [ecx*4 + 0x42a8c0]
mov ecx, eax
xor ecx, 0x240000
shr ecx, 0x12
and ecx, 0x3f
or esi, dword [ecx*4 + 0x42aac0]
mov ecx, eax
shr ecx, 0xe
xor ecx, 0xffffffea
and ecx, 0x3f
or esi, dword [ecx*4 + 0x42aec0]
mov ecx, eax
xor ecx, 0x3800
shr ecx, 0xa
and ecx, 0x3f
or esi, dword [ecx*4 + 0x42acc0]
mov ecx, eax
shr ecx, 6
xor ecx, 0xfffffff6
and ecx, 0x3f
or esi, dword [ecx*4 + 0x42adc0]
and eax, 0xfffffffc
xor eax, 0xffffff98
and eax, 0xfc
or esi, dword [eax + 0x42a9c0]
mov eax, ebx
rol eax, 1
xor eax, 0xfffffffd
and eax, 0x3f
or esi, dword [eax*4 + 0x42afc0]
xor esi, edi
mov eax, esi
rol eax, 0x1f
mov ecx, eax
shr ecx, 0x1a
xor ecx, 0xffffffea
and ecx, 0x3f
mov ecx, dword [ecx*4 + 0x42abc0]
mov edi, eax
xor edi, 0x3400000
shr edi, 0x16
and edi, 0x3f
or ecx, dword [edi*4 + 0x42a8c0]
mov edi, eax
shr edi, 0x12
xor edi, 0xfffffff1
and edi, 0x3f
or ecx, dword [edi*4 + 0x42aac0]
mov edi, eax
shr edi, 0xe
xor edi, 0xfffffff0
and edi, 0x3f
or ecx, dword [edi*4 + 0x42aec0]
mov edi, eax
shr edi, 0xa
xor edi, 0xffffffe8
and edi, 0x3f
or ecx, dword [edi*4 + 0x42acc0]
mov edi, eax
shr edi, 6
xor edi, 0xfffffff5
and edi, 0x3f
or ecx, dword [edi*4 + 0x42adc0]
and eax, 0xfffffffc
xor eax, 0xffffff98
and eax, 0xfc
or ecx, dword [eax + 0x42a9c0]
mov eax, esi
rol eax, 1
xor eax, 0x17
and eax, 0x3f
or ecx, dword [eax*4 + 0x42afc0]
xor ecx, ebx
mov dword [esp + 0x10], ecx
mov byte [esp + 0x37], cl
mov ebx, ecx
rol ebx, 0x1f
mov eax, ebx
shr eax, 0x1a
xor eax, 0xffffffe5
and eax, 0x3f
mov eax, dword [eax*4 + 0x42abc0]
mov edi, ebx
xor edi, 0x7400000
shr edi, 0x16
and edi, 0x3f
or eax, dword [edi*4 + 0x42a8c0]
mov edi, ebx
xor edi, 0x40000
shr edi, 0x12
and edi, 0x3f
or eax, dword [edi*4 + 0x42aac0]
mov edi, ebx
xor edi, 0x48000
shr edi, 0xe
and edi, 0x3f
or eax, dword [edi*4 + 0x42aec0]
mov edi, ebx
shr edi, 0xa
xor edi, 0xffffffef
and edi, 0x3f
or eax, dword [edi*4 + 0x42acc0]
mov edi, ebx
shr edi, 6
xor edi, 0xfffffff2
and edi, 0x3f
or eax, dword [edi*4 + 0x42adc0]
and ebx, 0xfffffffc
xor ebx, 0xffffffbc
and ebx, 0xfc
or eax, dword [ebx + 0x42a9c0]
mov ebx, ecx
rol ebx, 1
xor ebx, 0x12
and ebx, 0x3f
or eax, dword [ebx*4 + 0x42afc0]
xor eax, esi
mov dword [esp + 0x1c], eax
xor esi, esi
mov dword [esp + 0xc], eax
shr eax, 0x18
mov byte [esp + 0x30], al
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x33], al
mov eax, ecx
shr eax, 0x18
mov byte [esp + 0x34], al
mov eax, dword [esp + 0x1c]
shr eax, 0x10
mov byte [esp + 0x31], al
mov eax, ecx
shr eax, 0x10
shr ecx, 8
mov byte [esp + 0x35], al
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x36], cl
shr eax, 8
mov byte [esp + 0x32], al
xor eax, eax
mov byte [esp + 0x38], al
mov byte [esp + 0x39], al
mov byte [esp + 0x3a], al
mov byte [esp + 0x3b], al
mov byte [esp + 0x3c], al
mov byte [esp + 0x3d], al
mov byte [esp + 0x3e], al
mov byte [esp + 0x3f], al
movsx ecx, byte [esi + 0x42a680]
test ecx, ecx
je 0x4102bd
lea eax, [ecx - 1]
mov edx, eax
sar edx, 2
shr edx, 0x1d
lea edx, [edx + ecx - 1]
sar edx, 3
and eax, 0x80000007
jge 0x41026f
dec eax
or eax, 0xfffffff8
inc eax
movsx edx, byte [esp + edx + 0x30]
neg eax
add eax, 7
mov ecx, eax
mov ebx, 1
shl ebx, cl
mov eax, esi
movsx edi, bl
and edi, edx
xor ebx, ebx
test edi, edi
setne bl
mov edi, esi
sar edi, 2
shr edi, 0x1d
add edi, esi
sar edi, 3
and eax, 0x80000007
movzx edx, byte [esp + edi + 0x38]
jge 0x4102ae
dec eax
or eax, 0xfffffff8
inc eax
neg eax
add eax, 7
mov ecx, eax
shl ebx, cl
or edx, ebx
mov byte [esp + edi + 0x38], dl
add esi, 1
cmp esi, 0x40
jl 0x410246
mov edx, dword [esp + 0x14]
movzx esi, byte [esp + 0x38]
movzx eax, byte [ebp]
xor eax, esi
mov byte [edx], al
mov edi, dword [esp + 0x21]
mov dword [esp + 0x20], edi
movzx ecx, word [esp + 0x25]
mov word [esp + 0x24], cx
movzx ebx, byte [esp + 0x27]
mov byte [esp + 0x26], bl
mov ecx, dword [esp + 0x18]
movzx eax, byte [edx]
mov byte [esp + 0x27], al
add edx, 1
add ebp, 1
add ecx, 0xffffffff
mov dword [esp + 0x18], ecx
jne 0x40f731
mov ebx, dword [esp]
mov esi, dword [esp + 4]
mov edi, dword [esp + 8]
add esp, 0x40
pop ebp
ret